【发布时间】:2014-05-04 03:15:49
【问题描述】:
我试图杀死终止进程的 PPID 进程(也杀死子 pid)立即在几秒钟内将信号发送回我的一个控制台,但子进程需要时间来响应终止响应。任何人都知道它为什么会发生..?
【问题讨论】:
-
什么信号被发送回控制台?父进程是否从 shell/控制台启动?
我试图杀死终止进程的 PPID 进程(也杀死子 pid)立即在几秒钟内将信号发送回我的一个控制台,但子进程需要时间来响应终止响应。任何人都知道它为什么会发生..?
【问题讨论】:
每当父进程被杀死时,子进程就变成ORPHAN 进程,因此INIT 进程成为ORPHAN 进程的父进程。由于 INIT 进程 的创建方式是,每当任何进程被杀死时,它的所有子进程都会由 INIT 进程处理,直到进程完成。
【讨论】:
看起来父进程没有捕捉到任何信号,而子进程却捕捉到了。
或者,子进程打开资源并尝试优雅退出,确保这些资源得到妥善处理。
在这种情况下,您可能需要重写父进程以捕获信号,将其转发给其子进程,然后wait() 让它们完成并退出。
【讨论】: