を再インストールします。私を混乱させるハンドラに2つの部分がありSIGCHLDハンドラIは次のようにSIGCHLDハンドラのいくつかの例を参照してください
void child()
{
wait(0);
signal(SIGCHLD, child);
}
void server_main()
{
...
signal(SIGCHLD, child);
...
for(;;;) {
...
switch(fork()) {
...
}
}
: 1)。 SIGCHLDは、子プロセスが終了するか停止すると捕捉されます。それでは、なぜハンドラの中で待たなければならないのですか?信号はすでに到着しています。 2)。 SIGCHLDハンドラを再インストールする必要がある理由シグナルコールがハンドラを一度インストールするのではないのですか?
ありがとうございます!
ありがとう、私は最初のポイントを参照してください。 2番目のシグナルハンドラは親の権利のためにインストールされていますか?複数の子プロセスが終了したときにシグナルハンドラが有効にならないのはなぜですか? – Oxdeadbeef
説明をsarnoldで見てください。彼はそれをとてもうまく説明しました。 – halfdan