2

如果一个进程做了fork然后孩子做了setsid,有没有办法告诉它是第一个进程的孩子?有什么办法可以杀死这样的进程及其父进程?

4

1 回答 1

1

setsid不会破坏父/子关系。所以你仍然可以得到一个进程的子进程,例如这里描述的(链接我们 ubuntu 特定的,但这适用于任何其他发行版)。

父进程总是可以轻松地跟踪其直接子进程,因为 fork 返回它们的 id(孙子变得更加棘手......)并在退出时(优雅地)向其任何子进程发送信号。

prctl(PR_SET_PDEATHSIG, <signal>)(如果父母死了,让孩子收到信号的方便方法)也将在对 setid 的调用中幸存下来。

于 2016-05-28T05:06:02.333 回答