2004-09-11から1日間の記事一覧

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

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

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

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

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

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

>