杀死父进程而不是父进程的最佳方法是什么?假设我有一个不确定数量的子进程,我已经分叉并在给定的警报中,在我的信号处理程序中,我想杀死我所有的子进程,但由于各种原因让自己继续运行。
截至目前,我正在使用 kill(-1*parentPid, SIGKILL) 但这会杀死我的父母及其孩子。
实现这一点的一种方法是传递一些可以被捕获(而不是SIGKILL)的信号。然后,安装一个信号处理程序来检测当前进程是否是父进程,_exit()如果不是父进程则调用。
您可以使用SIGUSR1或SIGUSR2,或者也许SIGQUIT。
我已经在这里说明了这种技术。
可选(根据 Lidong 的建议),父进程可以SIG_IGN在发出kill()命令之前在信号上使用。
signal(SIGQUIT, SIG_IGN);
kill(0, SIGQUIT);
Run Code Online (Sandbox Code Playgroud)