2010-11-18 17 views
3

私は次の問題があります:親プロセスが子プロセスをすべてキャッチしない

私はfork()関数を使って別のプロセス(子プロセス)を作成するmain(親プロセス)プロセスを持っています。私はゾンビを排除するために子供の地位を取得しています。 1つの子プロセスがある場合、正しくキャッチされますが、親プロセスによって作成されたプロセス(aprx。30)がさらにある場合、aprxが存在します。 4人のゾンビが左=親はすべての子供を捕まえていません(返信ステータス/状態= <無効>)。

子供の状態を事前に

void selfkill(int status) { 
    wait(&status); 
} 

signal(SIGCHLD, selfkill); 

感謝を使用してcatchedされます。

答えて

4

信号ハンドラのループ内で、おそらくwaitpid()をWNOHANGと一緒に使用してください。

おそらく、すべての信号が配信されているわけではありません。信号の一部が届きにくいためです。おそらくsignal()の代わりにsigaction()を使用することで、この問題を緩和できます。

関連する問題