いくつかの子プロセスをフォークしたメインプロセスがあります。
それぞれの子供は何かをして、自分自身をブロックします。自分自身をブロックすることにより、すべての子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) の処理が終わった後、ハンドラーはこれらのシグナルごとに実行されますか、それともこれらのシグナルは無視されますか?