【问题标题】:Set a guardian process for the child processes in case parent dies为子进程设置监护人进程,以防父进程死亡
【发布时间】:2011-08-04 03:54:16
【问题描述】:

QNX procmgr_guardian 中有一个函数可以将一个子进程设置为另一个子进程的监护人,以防父进程死亡。 Linux中也有这样的功能吗?如何在 Linux 中实现它?任何指针表示赞赏。

【问题讨论】:

  • 如果您回过头来接受过去收到的一些答案,您更有可能得到答案...
  • 对不起,我没听懂。你什么意思?
  • 哦,好的。对于那个很抱歉。现在我懂了 ! :(

标签: linux linux-kernel


【解决方案1】:

没有直接的方法可以监控不是您自己的孩子的进程。但是,您可以使用一个 hack:使用pipe() 创建一个 FIFO;确保要监视的进程持有管道的写入端(并且它在所有其他进程中都已关闭)。如果进程终止,将在管道的读取端发出 EOF 条件信号(即,选择将指示可读条件)。

如果您希望进程在其直接父进程死亡时重新设置父进程,您可以使用PID namespaces 实现此目的。通过将“守护”进程设置为 PID 命名空间中的 PID 1,它将继承该命名空间中的所有孤立进程。

【讨论】:

  • 这不是为了监视一个不是子进程的进程。 “函数 procmgr_guardian() 允许守护进程声明一个子进程,以便在其子进程死亡时接管它的子进程:”如qnx.com/developers/docs/6.4.1/neutrino/lib_ref/p/… 所示。我想知道Linux中是否存在类似的功能。或者我想知道我们是否可以将子进程的父进程更改为“init”以外的另一个进程
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2018-02-22
  • 2014-06-19
  • 1970-01-01
  • 2018-07-28
  • 2016-09-22
  • 1970-01-01
相关资源
最近更新 更多