Osx
OSX 上的 C 語言中的 Linux 系統呼叫
所以我做了一個快速測試
#include <sys/types.h> #include <unistd.h> #include <stdio.h> int main (int argc, char *argv[]) { printf("Hello World\n"); printf("%d\n",getpid()); }
在執行 OSX 10.9.5 列印的我的 macbook pro 上使用 gcc 編譯
Hello World 640
正如我所期望的那樣,它適用於大多數 Linux 發行版。我知道 darwin 核心是基於 UNIX 的,但是所有 linux 系統呼叫在 OSX 上的行為是否與在 Ubuntu 上的行為完全相同?(我知道 pid 在不同的時間執行時會有所不同,但這不是我在這裡真正要談論的)。我還在我的 SSD 的一個小分區上安裝了 Ubuntu,所以如果答案是否定的,那沒關係。
我會說呼叫
getpid()
“linux系統呼叫”是一種誤導。這給人的印像是它是一個特定於 Linux 的系統呼叫,但事實並非如此。實際上,getpid()
POSIX 指定了許多其他系統呼叫,您會發現它在 Linux 和 MacOS 以及許多其他系統上實現,具有相同的行為。您將在典型軟體中使用的大多數係統呼叫甚至 C 庫函式都是由 POSIX 和 ANSI C 等標準指定的,並且您將在許多不同的作業系統上以相同的行為實現它們。攜帶式軟體是保持這組廣泛可用的通用系統呼叫和功能的軟體。
Linux 也有特定於 Linux 的系統呼叫。MacOS 也有特定於 MacOS 的系統呼叫。顯然,這些都不適用於相反的作業系統。此類系統呼叫的聯機幫助頁通常會指出它們不可移植的事實。此外,它們經常作為低級實現細節存在,大多數軟體不需要使用它們,這使得保持大多數軟體的可移植性變得更容易。