所以我做了一些研究,但似乎没有很多适合我的情况,或者我只是不理解。
我基本上有一个 fork 的父进程 - 它产生了一个 child ..现在这个 child 也会在某个时候 fork 。
我希望父进程.. 主父进程能够捕获任何子进程的退出状态(第一个分支的子进程及其分支时的任何子进程)
如果出现问题,我基本上可以让任何进程退出。我希望主要父级接收此退出状态。如果它因为错误而退出,我可以像 if 语句一样捕获它并打印出一些东西。
目前..如果第一个 child 退出并出现错误并获得正确的退出状态,我可以捕捉到..但它的任何 child 都不会工作。不确定我是否必须使用奇怪版本的 waitpid 或什么。
我该怎么做?
最佳答案
调用wait系统调用(或 waitpid(-1, &status, 0)
)。或者等待某个进程组 ID(因为您的所有间接子进程共享同一个进程组,除非他们更改它。)。也许用 setpgid 创建你自己的进程组
然后你得到 SIGCHLD signal当 child 离开时。
关于c - 如何等待所有子进程终止并获取每个退出状态,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8199815/