Find centralized, trusted content and collaborate around the technologies you use most.
Teams
Q&A for work
Connect and share knowledge within a single location that is structured and easy to search.
如果一个进程做了fork然后孩子做了setsid,有没有办法告诉它是第一个进程的孩子?有什么办法可以杀死这样的进程及其父进程?
fork
setsid
setsid不会破坏父/子关系。所以你仍然可以得到一个进程的子进程,例如这里描述的(链接我们 ubuntu 特定的,但这适用于任何其他发行版)。
父进程总是可以轻松地跟踪其直接子进程,因为 fork 返回它们的 id(孙子变得更加棘手......)并在退出时(优雅地)向其任何子进程发送信号。
prctl(PR_SET_PDEATHSIG, <signal>)(如果父母死了,让孩子收到信号的方便方法)也将在对 setid 的调用中幸存下来。
prctl(PR_SET_PDEATHSIG, <signal>)