杀死所有子进程,但不杀死父进程

时间:2017-06-27 15:18:40

标签: node.js linux shell

如何在不杀死父进程的情况下终止所有子进程?我在我的节点脚本中产生了多个进程,我想要杀掉所有进程并产生新的进程。

现在我找到了一个terminate npm库来杀死父进程及其所有子进程,但我不想杀死父进程,最好的解决方案是不使用第三方库。

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

1 个答案:

答案 0 :(得分:0)

实现此目的的一种方法是提供一些可以捕获的信号(不是SIGKILL)。然后,安装一个信号处理程序,检测当前进程是否是父进程,如果它不是父进程,则调用_exit()。

您可以使用SIGUSR1或SIGUSR2,也可以使用SIGQUIT。

我在这里说明了这种技术。

可选(如Lidong所建议),父进程可以在发出kill()命令之前对信号使用SIG_IGN。

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