【问题标题】:Killing PPID can kill all child process association with it at same time?杀死PPID可以同时杀死所有与之关联的子进程吗?
【发布时间】:2014-05-04 03:15:49
【问题描述】:

我试图杀死终止进程的 PPID 进程(也杀死子 pid)立即在几秒钟内将信号发送回我的一个控制台,但子进程需要时间来响应终止响应。任何人都知道它为什么会发生..?

【问题讨论】:

  • 什么信号被发送回控制台?父进程是否从 shell/控制台启动?

标签: shell unix ksh aix


【解决方案1】:

每当父进程被杀死时,子进程就变成ORPHAN 进程,因此INIT 进程成为ORPHAN 进程的父进程。由于 INIT 进程 的创建方式是,每当任何进程被杀死时,它的所有子进程都会由 INIT 进程处理,直到进程完成。

【讨论】:

  • 我想我应该再等一段时间才能充分发挥作用,然后再将其标记为答案..
  • 当一个进程被杀死时,它的子进程不会立即死亡。你可以在谷歌上搜索 INIT 进程,你会发现每当任何进程被杀死时,它的子进程都会被 INIT 进程照顾。因为 INIT 流程负责处理此类流程。
【解决方案2】:

看起来父进程没有捕捉到任何信号,而子进程却捕捉到了。

或者,子进程打开资源并尝试优雅退出,确保这些资源得到妥善处理。

在这种情况下,您可能需要重写父进程以捕获信号,将其转发给其子进程,然后wait() 让它们完成并退出。

【讨论】:

  • 谢谢 Henk,我已经通过首先从底层子进程杀死然后继续最后一个父 ID 来实施解决方案。我的问题是为什么发生这样的事情对 Mayank 的回答是有意义的。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2010-12-08
  • 2019-12-09
  • 2023-03-03
  • 2013-08-19
  • 2013-06-28
  • 1970-01-01
相关资源
最近更新 更多