如何在不杀死父进程的情况下终止所有子进程?我在我的节点脚本中产生了多个进程,我想要杀掉所有进程并产生新的进程。
现在我找到了一个terminate
npm库来杀死父进程及其所有子进程,但我不想杀死父进程,最好的解决方案是不使用第三方库。
terminate(process.pid, function (err) {
if (err) {
console.error("Could not kill processes");
}
});
答案 0 :(得分:0)
实现此目的的一种方法是提供一些可以捕获的信号(不是SIGKILL)。然后,安装一个信号处理程序,检测当前进程是否是父进程,如果它不是父进程,则调用_exit()。
您可以使用SIGUSR1或SIGUSR2,也可以使用SIGQUIT。
我在这里说明了这种技术。
可选(如Lidong所建议),父进程可以在发出kill()命令之前对信号使用SIG_IGN。
signal(SIGQUIT, SIG_IGN);
kill(-parent_pid, SIGQUIT);