5

一連の非同期フォークを使用して(ツールキットの下で)作業を行うものがあります。

コードの特定の領域でフォークし、子プロセスでブロッキング待機を行っています。

SIGCHLD ハンドラーは、ブロッキング待機がシグナルを検出する前にシグナルをむさぼり食うのでしょうか。

4

1 に答える 1

5

SIGCHLDハンドラーは、終了する子プロセスのエッジであるイベントで起動されます。のブロッキング呼び出しwaitpid()は、その特定の子プロセスの条件、レベルが存在しなくなるのを待ちます。

プロセスが終了すると、SIGCHLDが配信され、そのハンドラーは正常に実行されます。そのプロセスにブロッキングがあった場合waitpid()、シグナルハンドラーの存在に関係なく、通常どおりに戻ります。

于 2012-05-01T15:35:22.990 に答える