Linux システムは OSX で C を呼び出します。

Linux システムは OSX で C を呼び出します。

だから簡単にテストしてみました

#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システムコールはUbuntuと同じようにOSXでもまったく同じように動作しますか? (PIDが異なり、実行するたびに異なることを知っていますが、実際にここでは言うものではありません。)SSDの小さなパーティションにUbuntuをインストールしたので、答えが「いいえ」であれば問題ありません。

ベストアンサー1

getpid()私はそれを「Linuxシステムコール」と呼ぶことが誤解を招くと言いたいと思います。これはLinux-という印象を与えます。特定システムコールですが、そうではありません。実際、getpid()POSIXは他の多くのシステムコールを指定し、LinuxやMacOS、他の多くのシステムでも同じ動作で実装されていることがわかります。

一般的なソフトウェアで使用されるほとんどのシステムコール、さらにはCライブラリ機能もPOSIXやANSI Cなどの標準によって指定され、さまざまなオペレーティングシステムで同じ動作で実装されています。ポータブルソフトウェアは、広く利用可能な共通のシステムコールおよび機能セットを維持するソフトウェアである。

LinuxにはLinux関連のシステムコールもあります。 MacOSには、MacOS専用のシステムコールもあります。明らかに、これらのいずれも反対のオペレーティングシステムで実行されていません。これらのシステムコールのマンページには一般に移植性がないと述べられています。さらに、これは低レベルの実装詳細で存在することが多く、ほとんどのソフトウェアはそれを使用する必要がないため、ほとんどのソフトウェアは移植性を維持するのが簡単です。

おすすめ記事