我有一个应用程序(在Java BTW中),它将第三方命令行实用程序作为子进程分配。当给这个应用程序发出SIGTERM等信号时,我注意到该信号也被转发到所有子进程。
网上有很多关于如何在一个过程中处理信号的东西,但是我无法控制第三方工具如何选择处理它们的信号。
理想情况下,我在我的应用程序中要做的是阻止任何传入的信号从级联到我的孩子,并自己处理它们。根据我所见,实施我自己的信号处理程序并不能阻止信号独立传播给我的孩子。
答案 0 :(得分:1)
如果将kill信号发送到整个组(使用killpg()系统调用),则所有进程都应该接收它。
为了保护孩子,孩子需要配置信号处理程序和/或sigprocmask,或者你需要ptrace孩子并拦截信号传递)