2012-01-26 19 views
1

私はC +アルゴリズムを学んでいます(終わったばかりです)。初心者です。私は、POSIX Linux APIがMac上で使用されているかどうかを知りたかったのです。 Linuxには、pread pwrite readv writev nftw symlink pipe popen posix_self sigprocmask sigaction(システムコール)のような機能があります。 Macには同じAPIがありますか? OS-XはBSDカーネルをベースにしていると聞いています.OS-X上でLinux上で書かれたコードをPOSIX関数だけを使用すると使えばいいのですか? OS-X APIとLinux POSIX/SUSv3 APIの似たような点は?MacOS-XとLinux APIのプログラミング - POSIX互換?

+0

OSXはUnixの認定を受けています。 Linuxはそうではありません。 BSDのルーツはUnixにあります。 – Rob

答えて

0

The Wikipedia article on POSIXには、コンプライアンス専用のセクションがあります。短い答え:ええ、POSIXのすべての機能を持っていると思います。おそらくPOSIXでないかもしれない多くのBSD apisを持っているでしょう。

+0

linuxとmac os xの両方がposixに準拠している場合、なぜバイナリと互換性がないのですか? LinuxのターミナルプログラムをMacで動かすべきではありませんか? – poitroae

+0

いいえPOSIXは[API](http://en.wikipedia.org/wiki/API)ですが、両方のオペレーティングシステムで同じものを実行するには、同じ[ABI](http:// en。 wikipedia.org/wiki/Application_binary_interface)、MacとLinuxではそうではありません。 –

0

両方のプラットフォームで動作するコードを書くことができるかどうかを尋ねるなら、答えはyesです。それが簡単かどうかを尋ねているなら、答えはおそらくノーです。

POSIXはLinux標準ではありませんが、OSX、BSD、HPUX、Solaris、さらにはQNXなどのリアルタイムオペレーティングシステムでさえLinuxがこれに従います。

可能な限りPOSIX APIをプログラミングすると、コードを移植する方がずっと簡単になります。

0

彼らはを閉じるです。 Linuxでは見つからないBSDや、BSDで見つからないLinuxのものがあります。ほとんどの場合、両方のプラットフォームと互換性のあるサブセットには、ほとんど問題なく使用できます。移植性のないPOSIX APIには、多くの場合、_npという指定子が付いています。 1つのプラットフォームでサポートされていないものもあります。より確立されたAPIには安全な中間地があります。もちろん、これは、対象のOSのバージョンによって異なります。より一般的でないAPIに迷惑をかけると、実装が多少異なる場合があります。私の最初のストップは、manページをチェックすることです。

+0

は_BSD_SOURCEで動作します(機能テストマクロ)?あなたのコードをもっとBSD-ishにする定義を有効にするはずですか? –

+0

長い間、OS Xは「BSD風」でした。 10.5 + Intel以来、それは正式にUNIXに準拠しています - http://en.wikipedia.org/wiki/UNIX_03。私が推奨するのは、ターゲットとするすべてのシステム(可能な場合)と互換性のあるAPIを使用することです。そのサブセットに使用するものを絞り込むだけです。 x-platプログラムは、1つのシステムに対してこれらのAPIを実装しなくてはならないときにはるかに複雑になります。 LinuxでビルドするときにソースでBSD拡張を見つけたら、両方で利用できるAPIを使うようにプログラムを変更するだけです。 OS Xはダーウィンであり、事態がさら​​に複雑になります。 – justin

関連する問題