【问题标题】:process re-parenting: controlling who is the new parent过程重新养育:控制谁是新的父母
【发布时间】:2011-09-22 12:25:13
【问题描述】:

新父母总是“init”还是有什么方法可以控制谁成为新父母

维基百科似乎表明它始终是“init”。我真的希望不是这样。我已经用 setpgid 和 setsid 尝试了我能想到的一切,但没有运气。现在我看到这篇维基百科文章我需要建议。

在类 Unix 操作系统中 孤立的进程将立即 被特殊的init系统采用 过程。这个操作叫做 重新养育并自动发生。 尽管在技术上该过程 将“init”进程作为其父进程, 它仍然被称为孤儿进程 由于最初的过程 创建它不再存在。 Taken from wikipedia

我问的原因是因为我正在制作一个运行多个工作进程的 Mac 应用程序。我希望这些工作进程在task manager 的进程层次结构中显示为主进程的子进程。一些工作人员以不同的用户身份运行,在 Mac OS X 上,我需要分叉两次才能将权限传递给子进程。因为我“双重派生”了当前作为守护进程运行的工作人员,并且在查看任务管理器时,我看到工作人员将“init”作为其父进程。

【问题讨论】:

    标签: unix process fork orphan process-reaper


    【解决方案1】:

    孤儿总是被init收养。没有Unix 方法可以将父进程更改为某个非初始化进程。


    从 Linux 3.4 开始,严格来说这不再是正确的。仍然没有可移植的 Unix 方式来执行此操作,但正如 Andy Lutomirski 指出的那样,Linux 3.4 为 prctl 添加了 PR_SET_CHILD_SUBREAPER

    实际上,子收割者履行init(1) 的角色,因为它 后代进程。

    【讨论】:

      【解决方案2】:

      在 Linux 上,您可以使用 PR_SET_CHILD_SUBREAPER 指示您的孤儿后代应该重新成为您的父母,而不是初始化。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2015-05-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2020-03-13
        相关资源
        最近更新 更多