【问题标题】:is there a way to tell if a process is a child if it did fork and then setsid有没有办法判断一个进程是否是一个子进程,如果它确实 fork 然后 setid
【发布时间】:2026-01-26 10:05:02
【问题描述】:

如果一个进程执行fork 然后子进程执行setsid,有没有办法判断它是第一个进程的子进程?有什么办法可以杀死这样的进程及其父进程?

【问题讨论】:

    标签: linux setsid


    【解决方案1】:

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

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

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

    【讨论】:

      最近更新 更多