2017-06-27 27 views
0

親プロセスを強制終了せずに、すべての子プロセスを強制終了するにはどうすればよいですか?私は自分のノードスクリプト内に複数のプロセスを生成しています。それらをすべて終了して新しいプロセスを生成したいのです。すべての子プロセスを強制終了しますが、親プロセスは終了しません。

今のところ、親プロセスとそのすべての子を殺すterminate npmライブラリが見つかりましたが、私は親プロセスを殺したくありません。最善の解決法はサードパーティのライブラリを使用しないことです。

terminate(process.pid, function (err) { 
    if (err) { 
     console.error("Could not kill processes"); 
    } 
}); 
+0

あなたが何らかの形で子プロセスを追跡していますか? –

+0

以下は、node.jsに固有のドキュメントです。https://nodejs.org/api/process.html#process_process_kill_pid_signal – alvits

答えて

0

これを達成する1つの方法は、(SIGKILLではなく)捕捉可能なシグナルを送達することです。次に、現在のプロセスが親プロセスかどうかを検出するシグナルハンドラをインストールし、親プロセスでない場合は_exit()を呼び出します。

SIGUSR1またはSIGUSR2、またはおそらくSIGQUITを使用できます。

ここではこの手法を説明しました。

オプションで(Lidongが示唆するように)、親プロセスはkill()コマンドを発行する前にシグナルにSIG_IGNを使用できます。

signal(SIGQUIT, SIG_IGN); kill(-parent_pid, SIGQUIT);

関連する問題