web-dev-qa-db-ja.com

C標準ライブラリとC POSIXライブラリの違い

「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>

63
Alcott

POSIXは標準Cライブラリのスーパーセットであり、それに準拠することに注意することが重要です。 CとPOSIXが競合する場合、Cが勝ちます。

ソケット、ファイル記述子、共有メモリなどはすべてPOSIXの一部ですが、Cライブラリには存在しません。

pthread.hはPOSIXスレッドに使用され、threads.hはC11の新しいヘッダーであり、Cライブラリの一部です。おそらく、pthreadは将来Cを支持して非推奨になるかもしれませんが、C11がまだ広く普及しているとは思わないでしょう。したがって、移植性が必要な場合は、今のところpthreadをお勧めします。移植性が問題にならず、C11スレッドを使用できる場合は、おそらくそれらを使用する必要があります。

43
Per Johansson

C [〜#〜] posix [〜#〜] ライブラリは、POSIXシステム用のC標準ライブラリの仕様です。 ANSI C規格と同時に開発されました。 POSIXが標準Cと互換性を持つようにするための努力がなされました。 POSIXには、標準Cで導入された機能に追加の機能が含まれています。

10
L.ppt

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に問題がある可能性があります。