gpt4 book ai didi

c - 如何跟踪所有要清理的后代进程?

转载 作者:太空狗 更新时间:2023-10-29 17:03:22 25 4
gpt4 key购买 nike

我有一个程序可以fork()exec() 链中的多个进程。例如:进程 A --> fork, exec B --> fork, exec C --> fork, exec D。所以 A 是 C 的曾曾祖 parent 。

现在的问题是我对进程 B、C 和 D 没有任何控制权。因此,可能会发生几种情况。

  1. 后代进程可能会执行 setsid() 来更改其进程组和 session 。
  2. 或者其中一个后代进程终止(比如 C),因此它的子进程 (D) 是 init 的父级。

因此,我不能依靠进程组 ID 或父进程 ID 来跟踪 A 的所有后代。是否有任何可靠的方法来跟踪所有后代?更具体地说,我想杀死所有后代(孤儿和其他人)。

如果它符合 POSIX 标准,那就太好了。

最佳答案

执行此操作的 POSIX 方法只是使用进程组。显式更改其进程组/ session 的后代进程正在做出一个慎重的决定,即让其原始父进程跟踪其生命周期 - 他们专门将自己从父进程的控制中解放出来。这样的过程不是孤儿——它们是“飞出巢穴”并希望控制自己一生的成年人。

关于c - 如何跟踪所有要清理的后代进程?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6936998/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com