POSIX開始使用POSIX


版本

標準發行年份
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-01
POSIX.1-2013 IEEE Std 1003.1-2013 2013年4月19日
POSIX.1-2016 IEEE Std 1003.1-2016 2016年9月30日

什麼是POSIX?

POSIX代表“ 可移植操作系統接口 ”,它定義了一組標準,以提供不同計算平台之間的兼容性。該標準的當前版本是IEEE 1003.1 2016,可以從OpenGroup POSIX規範訪問。以前的版本包括POSIX 2004POSIX 1997 。 POSIX 2016版基本上是POSIX 2008和勘誤表(也有POSIX 2013版本)。

POSIX為類UNIX操作系統和其他操作系統定義了各種工具接口,命令和API。

以下被認為是在POSIX標準化的範圍內:

  • 系統接口(函數,宏和外部變量)
  • 命令解釋器,或Shell( sh實用程序)
  • 公用事業(如更多ls

在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 直接執行的命令行。