POSIXPOSIXを使い始める


バージョン

バージョン標準リリース年
POSIX.1 IEEE Std 1003.1-1988 1988-01-01
POSIX.1b IEEE Std 1003.1b-1993 1993-01-01
POSIX.1c IEEE Std 1003.1c-1995 1995-01-01
POSIX.2 IEEE Std 1003.2-1992 1992-01-01
POSIX.1-2001 IEEE Std 1003.1-2001 2001-12-06
POSIX.1-2004 IEEE Std 1003.1-2004 2004-01-01
POSIX.1-2008 IEEE Std 1003.1-2008(別名「 基本仕様、第7版 」) 2008年12月1日
POSIX.1-2013 IEEE Std 1003.1-2013 2013年4月19日
POSIX.1-2016 IEEE Std 1003.1-2016 2016-09-30

POSIXとは何ですか?

POSIXは「 Portable Operating System Interface(ポータブルオペレーティングシステムインターフェイス) 」の略で、異なるコンピューティングプラットフォーム間の互換性を提供する一連の標準を定義しています。標準の現在のバージョンはIEEE 1003.1 2016であり、OpenGroup POSIX仕様からアクセスできます。以前のバージョンにはPOSIX 2004POSIX 1997が含まれています。 POSIX 2016版は本質的にPOSIX 2008と正誤表です(POSIX 2013リリースもあります)。

POSIXは、UNIXライクなオペレーティングシステムなどのためのさまざまなツールのインターフェイス、コマンド、およびAPIを定義しています。

以下は、POSIX標準化の範囲内にあるものとみなされます。

  • システムインタフェース(関数、マクロ、および外部変数)
  • コマンドインタープリタ、またはシェル( shユーティリティ)
  • ユーティリティ( morecatlsなど

POSIXスコープ外:

  • DBMSインタフェース
  • グラフィカルインタフェース
  • バイナリコードの移植性

こんにちは世界

エラーチェックのない簡単なHello, World プログラム:

#include <unistd.h> /* For write() and STDOUT_FILENO */
#include <stdlib.h> /* For EXIT_SUCCESS and EXIT_FAILURE */

int main(void) {
        char hello[] = "Hello, World\n";
        
        /* Attempt to write `hello` to standard output file */
        write(STDOUT_FILENO, hello, sizeof(hello) - 1);

        return EXIT_SUCCESS; 
}
 

エラーチェックの場合:

#include <unistd.h> /* For write() and STDOUT_FILENO */
#include <stdlib.h> /* For EXIT_SUCCESS and EXIT_FAILURE */

int main(void) {
        char hello[] = "Hello, World\n";
        ssize_t ret = 0;
        
        /* Attempt to write `hello` to standard output file */
        ret = write(STDOUT_FILENO, hello, sizeof(hello) - 1);

        if (ret == -1) {
                /* write() failed. */
                return EXIT_FAILURE;
        } else if (ret != sizeof(hello) - 1) {
                /* Not all bytes of `hello` were written. */
                return EXIT_FAILURE;
        }

        return EXIT_SUCCESS; 
}
 

コンパイルと実行

上記のコード(いずれかのバージョン)がhello.c ファイルに格納されている場合、 c99 またはmake を使用してhello プログラムにコードをコンパイルできます。例えば、厳密にPOSIXに準拠したモードでは、理論上コンパイルして、以下を使ってプログラムを実行するかもしれません。

$ make hello
c99 -o hello hello.c
$ ./hello
Hello, World
$
 

ほとんどの実際のmake 実装では、別のCコンパイラ(おそらくcc 、おそらくgccclangxlc など)を使用します。多くの場合、コンパイラにはより多くのオプションが使用されます。明らかに、単にmake がコマンドラインで直接実行するコマンドを入力することができます。