POSIX

標準に非準拠の実害

IRCでちょっと突っ込み貰ったので補足。 ぼくが「〜しないほうがいいよ」と書いた処理、たとえば「シグナルハンドラで様々な処理を行う」などしているソースコードって、オープンソースのものも含めて結構あると思いますけど、大部分ちゃんと動いています。…

シグナルハンドラからのforkするのは安全か? (2) シングルスレッドの場合 - サンプルコード

シングルスレッドのコードでシグナルハンドラ中でforkし、子プロセスが非同期シグナルセーフな関数を呼んでデッドロックする実例です。 非同期シグナルセーフな関数として a() を用意しました。この関数は入り口でmutexをロック、中で10秒寝て、mutexをアン…

シグナルハンドラからのforkするのは安全か? (2) シングルスレッドの場合

シングルスレッドの場合、シグナルハンドラからforkする場合には次のどちらかの方法を取れば安全です(どちらも子プロセスの話)。 fork直後に(printfを含む如何なる関数も呼ばずに)すぐにexecする execしない場合、子プロセスは自身が消滅(exit)するまで「非…

シグナルハンドラからのforkするのは安全か? (1) マルチスレッドの場合

マルチスレッドのプログラムが、(シグナルハンドラ以外から)forkするときに注意事項があることは既に書きましたが、「forkをシグナルハンドラの中から行いたい」というケースでは、さらに追加の注意事項があります。 一般に、シグナルハンドラでforkしてよい…

Single UNIX Specification FAQ

メモ。Single UNIX Specification Frequently Asked Questions

TSF一覧

"[C++] UNIX上でのC++ソフトウェア設計の定石 (6)"で、"SUSv3に、TSF(Thread Safe Function) の一覧はないと思う" と書きましたが、ありますね。 正式な規格ではなくRationaleとしてですが、XSI Supported Functionsのところに、 On XSI-conformant systems,…

UNIXの規格について

いままで漠然と、「UNIXの規格について調べるときにはSUSv3を見る」ことにしていましたが、それでOKなのかちょっと調べてみました。結論としては、ここ 今や ISO/IEC 9945:2002 IEEE Std 1003.1-2001 (POSIX) Single UNIX Specification Version 3 (SUSv3) …