[解決済み] C言語標準ライブラリとC言語POSIXライブラリの違いについて
質問
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スレッドが利用可能であれば、おそらくそれを使うべきでしょう。
関連
-
g++が内部・外部コマンドソリューションとして認識されない、MinGWを初めて使うときの落とし穴
-
[解決済み] 1ビットのセット、クリア、トグルはどのように行うのですか?
-
[解決済み] const int*、const int * const、int const *の違いは何ですか?
-
[解決済み] C言語で配列のサイズを決定するにはどうすればよいですか?
-
[解決済み] ++iとi++の違いは何ですか?
-
[解決済み] POSIX」の意味を教えてください。
-
[解決済み] mallocとcallocの違い?
-
[解決済み] C言語で関数をパラメータとして渡すにはどうすればよいですか?
-
[解決済み] スタティック・ライブラリとシェアード・ライブラリの違い?
-
[解決済み】定義と宣言の違いは何ですか?
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
#137: 式は変更可能なlvalueでなければならない問題 // 文字列配列の代入問題
-
C++の配列コピー
-
未定義の `__isoc99_sscanf' への参照
-
警告: 'struct XXX' はパラメータリストの内部で宣言されています。
-
[解決済み] Code::Blocks アプリケーションをコンパイルできない
-
[解決済み] mallocで文字列を確保する
-
[解決済み] C言語でchar配列をコピーする方法は?
-
[解決済み] POSIX」の意味を教えてください。
-
[解決済み] プログラム終了前にmallocの後にfreeをしないと本当に何が起こるのか?
-
[解決済み] char s[]とchar *sの違いは何ですか?