c - 杀死父进程的所有子进程但让父进程保持事件状态

标签 c unix process

杀死父进程而不是父进程的最佳方法是什么?假设我有一个不确定数量的子进程,我已经 fork 并在给定的警报中,在我的信号处理程序中,我想杀死我所有的子进程,但由于各种原因让自己继续运行。

截至目前,我正在使用 kill(-1*parentPid, SIGKILL) 但这会杀死我的 parent 及其 child 。

最佳答案

实现此目的的一种方法是传递一些可以捕获的信号(不是 SIGKILL )。然后,安装一个信号处理程序来检测当前进程是否是父进程,并调用 _exit()如果不是父进程。
您可以使用 SIGUSR1SIGUSR2 ,或者 SIGQUIT .
我已经说明了这种技术 here .
可选(根据 Lidong 的建议),父进程可以使用 SIG_IGN在发出 kill() 之前的信号上命令。

signal(SIGQUIT, SIG_IGN);
kill(0, SIGQUIT);

关于c - 杀死父进程的所有子进程但让父进程保持事件状态,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18433585/

相关文章:

c - 错误 C2440 : 'function' : cannot convert from 'const IID' to 'DWORD'

c - 在 memcpy 期间取消引用 void * 指针,想知道如何解决这个问题?

c - 函数 fgets 不存储字符串

Python 退出处理程序

process - Hadoop RPC服务器不会停止

java - 如何使用 JNI 使用 java 程序运行 c 程序

mysql - 在C中将mysql数据库查询存储为变量

unix - Vim 语法高亮 : make region only match on one line

使用多个 fork() 子项计算表达式?

c# - 执行进程的 C# 类中的异步方法