同じタイプの複数のシグナルが送信され、処理されない場合、それらはキューに入れられません。プログラムが SIGUSR1
をマスクするとします。 、 kill(getpid(), SIGUSR1)
を呼び出します 10回でSIGUSR1
のマスクを外す . SIGUSR1
を受け取ります
何が起こるかは次のとおりです:
<オール>シグナル ハンドラーがシグナル nr1 の処理を完了すると、シグナル nr2 を処理し、次にシグナル ハンドラーが SIGUSR2 を処理します。
基本的に、同じタイプの保留中のシグナルはキューに入れられず、破棄されます。いいえ、そのように信号を「バースト」送信する簡単な方法はありません。破棄されるいくつかのシグナルが存在する可能性があると常に想定し、ハンドラーにクリーニングと何をすべきかを見つけさせようとします (すべての子が同時に死亡した場合、子を刈り取るなど)。