2

フォークを使用するプログラムがあります。子プロセスでは、リモート サーバーにログインしてコマンドを実行するだけです。親プロセスでは、子がタスクを完了するのを待ちます。所定の時間内に終了しない場合は、kill(child_pid, SIGTERM) を使用して子プロセスを強制終了します。しかし、これはゾンビプロセスのようなものを残すことに気付きました

93113 s000  Z+ 0:00.00 (ssh)

タイムアウトが増加すると、ゾンビ プロセスも増加し、最終的には ssh を使用できなくなります。

私を悩ませるゾンビを作成せずに子プロセスを強制終了するにはどうすればよいですか??

4

2 に答える 2

5

あなたkillが子供であっても、あなたはまだwaitそれをする必要があります。

于 2011-08-30T10:35:49.947 に答える
1

SIGCHLD親プロセスでリッスンし、 wait()et al を使用して子プロセスの終了コードを取得する必要があります。

于 2011-08-30T10:37:36.160 に答える