1. ホーム
  2. c

[解決済み] C言語標準ライブラリとC言語POSIXライブラリの違いについて

2023-07-17 17:14:20

質問

C 標準の lib と POSIX の lib で少し迷っています。というのも、C POSIX の lib で定義されている多くのヘッダーファイルは、C 標準の lib の一部でもあることがわかったからです。

つまり、"C standard lib" は ANSI C 組織で定義された lib で、プラットフォーム (Win32/Unix-like) によって異なる実装があり、"C POSIX lib" は Unix-like OS 上の "C standard lib" に対する実装でしかない、のですよね?

しかし、"C POSIX lib" には "C standard lib" で指定されていない以下のようなヘッダが含まれています。 <sys/types.h> , <sys/wait.h> そして <pthread.h> .

取る <pthread.h> を例にとると、C標準のlib"の対応するものは <threads.h> で、Linuxでマルチスレッドプログラムを書きたい場合、どのヘッダーファイルをインクルードすればいいんだ? <pthread.h><threads.h> ?

どのように解決するのですか?

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

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

pthread.h は POSIX のスレッドに使われ threads.h は C11 のための新しいヘッダで、C ライブラリの一部です。おそらく、pthreads は将来的に非推奨となり、C のものが採用されるでしょうが、C11 が広く普及することはまだ期待できないかもしれません。したがって、移植性を重視するならば、今のところ pthread を選ぶべきでしょう。移植性が問題でなく、C11スレッドが利用可能であれば、おそらくそれを使うべきでしょう。