首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >一个过程可以收养一个孙子作为它的孩子吗?

一个过程可以收养一个孙子作为它的孩子吗?
EN

Unix & Linux用户
提问于 2019-10-27 20:54:33
回答 1查看 1.6K关注 0票数 2

进程能否将其子进程的所有权传递给它的父进程?

背景

假设我们有三个过程:祖父母,父母和孩子。

父母生儿育女(父母不死)。

祖父母处理孩子死亡时的处理问题,因此需要在孩子死亡时通知他们。拿到SIGCHLD会很棒的。

EN

回答 1

Unix & Linux用户

发布于 2019-10-27 23:36:05

通常,父进程负责对其子进程执行wait(),以便它们的子进程在终止时不会变成僵尸。如果父进程在子进程之前终止,那么必须有一些进程来扮演父进程的清理角色,同样,防止子进程变成僵尸。默认情况下,当进程终止时,所有剩余的子进程都将使用pid 1对进程进行修复。

Linux确实提供了带有prctl选项的PR_SET_CHILD_SUBREAPER系统调用。根据prctl的手册页:

PR_SET_CHILD_SUBREAPER (自Linux3.4起)如果arg2是非零,则设置调用进程的“子子收割器”属性;如果arg2为零,则取消设置属性。子收割机为其后代进程履行init(1)的角色。当一个进程变成孤儿(即它的直系亲属终止)时,该进程将被修复到最近的活祖先子收割器。随后,在孤立进程中对getppid()的调用现在将返回子收割进程的PID,当孤儿终止时,子收割进程将接收SIGCHLD信号,并能够在进程上wait(2)以发现其终止状态。“子收割机”属性的设置不是由fork(2)clone(2)创建的子属性继承的。该设置在整个execve(2)中保存。在会话管理框架中,建立子收割过程是很有用的,在会话管理框架中,一个层次化的进程组由一个子收割进程管理,需要在其中一个进程--例如,双通道守护进程--终止时通知该进程(可能是为了重新启动该进程)。一些init(1)框架(例如,systemd(1))出于类似的原因使用了子收割过程。

这可能是一种选择,但父母去世的传宗接代(不仅仅是孙辈)将在呼叫过程中得到补偿。

票数 3
EN
页面原文内容由Unix & Linux提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://unix.stackexchange.com/questions/549018

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档