4

いくつかの子プロセスをフォークしたメインプロセスがあります。

それぞれの子供は何かをして、自分自身をブロックします。自分自身をブロックすることにより、すべての子SICHLDは親プロセスにシグナルを送信します。

また、子供たちが送信sigactionする をキャッチするために、メイン プロセス コードでアクションを宣言しました。SIGCLHD

static struct sigaction action;
action.sa_handler = handler 
sigfillset(&(action.sa_mask));
sigaction(SIGCHLD, &action, NULL);

SIGCHLDハンドラーが呼び出されると、どの子供がシグナルを送信したかを確認し、そのSIGCHLD子供のために何かを行います。

問題は、複数の子供が同時に信号を送信するとどうなるかということです。kid(1) が を送信したとしましょうSIGCHLD。ハンドラーはそれをキャッチし、ハンドルを完了する前に、 kid(2) と kid(3) の両方がシグナルを送信します。kid(1) の処理が終わった後、ハンドラーはこれらのシグナルごとに実行されますか、それともこれらのシグナルは無視されますか?

4

1 に答える 1