「C POSIX lib」と「C POSIX lib」に少し混乱しています。「C POSIX lib」で定義されている多くのヘッダーファイルも「C standard lib」の一部であることがわかったからです。
だから、私は、「C標準ライブラリ」はANSI C組織によって定義されたライブラリであり、異なるプラットフォーム(Win32/Unixのような)で異なる実装があり、「C POSIXライブラリ」は「C標準UnixライクなOSでのlib」
ただし、「C POSIX lib」には、<sys/types.h>
、<sys/wait.h>
、<pthread.h>
など、「C標準lib」で指定されていないヘッダーが含まれています。
<pthread.h>
を例にとると、その「C標準ライブラリ」に相当するものは<threads.h>
であると仮定し、Linuxでマルチスレッドプログラムを作成する場合、ヘッダーファイルに含める必要がある<pthread.h>
または<threads.h>
?
POSIXは標準Cライブラリのスーパーセットであり、それに準拠することに注意することが重要です。 CとPOSIXが競合する場合、Cが勝ちます。
ソケット、ファイル記述子、共有メモリなどはすべてPOSIXの一部ですが、Cライブラリには存在しません。
pthread.h
はPOSIXスレッドに使用され、threads.h
はC11の新しいヘッダーであり、Cライブラリの一部です。おそらく、pthreadは将来Cを支持して非推奨になるかもしれませんが、C11がまだ広く普及しているとは思わないでしょう。したがって、移植性が必要な場合は、今のところpthreadをお勧めします。移植性が問題にならず、C11スレッドを使用できる場合は、おそらくそれらを使用する必要があります。
C [〜#〜] posix [〜#〜] ライブラリは、POSIXシステム用のC標準ライブラリの仕様です。 ANSI C規格と同時に開発されました。 POSIXが標準Cと互換性を持つようにするための努力がなされました。 POSIXには、標準Cで導入された機能に追加の機能が含まれています。
POSIX 7 quote
http://pubs.opengroup.org/onlinepubs/9699919799/functions/V2_chap01.html#tag_14_01
1.1他の正式な標準との関係
POSIX.1-2008のこのボリュームが次の標準と完全に一致するように、細心の注意が払われています。
ISO C(1999)ISO/IEC 9899:1999、プログラミング言語-C、ISO/IEC 9899:1999/Cor.1:2001(E)、ISO/IEC 9899:1999/Cor.2:2004(E)、およびISO/IEC 9899:1999/Cor.3。
ISO/IEC 9899:1999規格(以下、ISO C規格と呼びます)の一部は、このボリュームのPOSIX.1-2008でも義務付けられている要件を説明するために参照されています。 POSIX.1-2008のこのボリュームに含まれる一部の機能とヘッダーには、ISO C標準のバージョンがあります。この場合、ISO C標準がどこで拡張されたかを示すために、CXマーキングが適宜追加されます(コードを参照)。 POSIX.1-2008のこのボリュームとISO C規格との間の矛盾は意図的ではありません。
私はいくつかの主要なAPI拡張を以下にリストしました: 私は本当に理解したことはありません:POSIXとは何ですか?
ANSI Cはまだ生きています、私は思う:ANSI CはISO C、Cxxによって継承および拡張されます。 POSIXは絶対にANSI Cに準拠しています。」
Windows、Unixライク、組み込みデバイスでANSI Cを簡単に作成できます。しかし、CxxまたはPOSIXに問題がある可能性があります。