杀死父级的所有进程但不是父级的最佳方法是什么?比方说,我有一个未定数的子进程,我已经分叉并且在给定的报警中,在我的信号处理程序中,我想要杀死所有子进程,但由于各种原因保持自己运行。截至目前,我正在使用kill(-1 * parentPid,SIGKILL),但这会杀死我的父母及其子女。杀死父级的所有子进程但离开父级活动
3
A
回答
3
完成此操作的一种方法是发送一些可以捕获的信号(而不是SIGKILL
)。然后,安装一个信号处理程序,检测当前进程是否为父进程,如果不是父进程,则调用_exit()
。
您可以使用SIGUSR1
或SIGUSR2
或者SIGQUIT
。
我已经说明了这种技术here。
可选(根据Lidong的建议),在发出kill()
命令之前,父进程可以在信号上使用SIG_IGN
。
signal(SIGQUIT, SIG_IGN);
kill(-parent_pid, SIGQUIT);
0
Jxh的回答很好。无论如何,也许你可以给fork
之后的每个子进程给一个signal hander
,并让它调用exit
函数。你给父母signal hander
,并让它ignore
的信号(如SIGUSR1
)。这可能会添加代码行,但您不需要检测信号处理函数中的父进程或子进程。
+3
嗨李东,一个小例子会走很久方式来说明应该做什么=) – puk
相关问题
- 1. Android:按主页按钮在子活动中杀死父活动
- 2. 当父进程被“kill -9”杀死时,子进程是否也会被杀死?
- 3. 产卵将杀死其父母但进程仍然活着的新进程?
- 4. 重新开放活动杀死进程
- 5. 当父母离开时叉子子进程会死? (bash)
- 6. onActivityResult被调用父级活动不子
- 7. jQuery隐藏父级但不是子级
- 8. nodeJS中的父级子进程
- 9. 虽然试图杀死父进程,子进程仍在运行
- 10. 父进程出口处杀死子进程
- 11. Bash子进程在执行eval时杀死父进程exec
- 12. 如何通过shell杀死父进程?
- 13. python杀死所有的子进程,甚至父母已经退出
- 14. 从父级删除所有子节点?
- 15. jQuery父级和子级divs激活不同的动作
- 16. 父进程等到子进程终止时,子进程如何才能杀死父进程?
- 17. C++在杀死父进程后保持进程有效
- 18. .kill()在python子进程中杀死父进程而不是子进程
- 19. Android - 保持服务活着,即使父进程被杀死
- 20. 可移动的QGraphicsItem父级但不是子级QGraphicsItem
- 21. 杀死父进程并在fork()之后离开子进程的目的是什么?
- 22. 如何杀死一个父进程的子树的树
- 23. android startActivityForResult正在杀死父活动中的一个线程
- 24. 子进程杀死它的父母不会终止自己
- 25. 设置父级和子级模型,但子级拥有它自己的列
- 26. 杀死分叉的孩子杀死父母吗?
- 27. 如果父母死亡,子进程不会自杀
- 28. 子级的子域父类
- 29. 杀死活动的所有实例
- 30. 如何使用管道同步父级和子级进程?
你可以简单地跟踪孩子的PIDs在一个简单的数组,当你叉他们? – user4815162342
我试过,但由于被分叉进程的量是不知道,我必须保持多少已经取得了柜台,以便正确地对其进行索引和计数器变量的状态不是很好在多个流程定义。 ..当然,我的执行可能很差。 –
所以你可以发送一个信号给父母和孩子,对吗? –