これは、親が子を殺すように通知されたときに、リーパー関数に追加のパラメーターを絞り込む方法 (c)のフォローアップです。
私の reaper() では、親が終了しようとしている子の pid を取得しようとします (ここでは残酷な言葉ではありません)。しかし、wait() は子の pid を返しません。代わりに、1 を返します。戻り値 1 のドキュメントがどこにも見つかりません。何か頭がありますか?
void reaper(int sig)
{
int status, killedpid;
while(killedpid = (/*waitpid(-1, &status, WNOHANG)*/wait(&status)) >= 0)
{
printf("reaper %d killed %d\n", getpid(), killedpid);
}
}
私の結果:
reaper 5933 killed 1 //actual child pid is 5936
前もって感謝します!