新父母总是“初学者”或是否有某种方法可以控制谁成为新的父母?
维基百科似乎表明它总是“初始化”。我真的希望事实并非如此。我尝试过setpgid和setsid所能想到的一切,但没有运气。现在,我看到这篇维基百科文章,我需要建议。
在类似Unix的操作系统中 孤立的过程将立即进行 由特殊的init系统采用 处理。调用此操作 重新养育并自动发生。 即使在技术上这个过程 将“init”进程作为其父级, 它仍然被称为孤儿过程 自从最初的过程 创造它不再存在。 Taken from wikipedia
我问的原因是因为我正在制作一个运行多个工作流程的Mac应用程序。我希望这些工作进程在task manager的进程层次结构中显示为主进程的子进程。一些工作者作为不同的用户运行,在Mac OS X上我需要分叉两次以将权限传递给子进程。因为我“双叉”工作人员目前作为守护人员运行,当与任务管理员一起查看时,我看到工作人员正在将“init”作为他们的父进程。
答案 0 :(得分:11)
孤儿一直被init
收养。没有Unix
方法将父级更改为某些非初始化进程。
从Linux 3.4开始,这已不再严格。仍然没有可移植的Unix方式这样做,但正如Andy Lutomirski指出Linux 3.4为prctl
增加了PR_SET_CHILD_SUBREAPER
。
实际上,subreaper履行
init(1)
的角色 后代过程。
答案 1 :(得分:9)
在Linux上,您可以使用PR_SET_CHILD_SUBREAPER来指示您的孤儿后代应该重新为您而不是初始化。