如何等待所有子进程终止并获取每个退出状态

时间:2011-11-20 06:08:17

标签: c process exit wait

所以我做了一些研究但不是很多似乎适合我的情况或者我只是不理解它。

我基本上有一个父进程分叉 - 它会成为一个孩子..现在这个孩子也会在某个时候分叉。

我想要父进程..主要父进程能够捕获任何子进程的退出状态(第一个分叉的子进程及其子进程中的任何子进程)

如果出现问题,我基本上有任何进程退出..并且我希望主要父级接收此退出状态..如果由于错误而退出,我可以像if语句一样捕获它并打印出来。

目前..我可以抓住,如果第一个孩子退出并出错并获得正确的exitstatus ..但它的任何一个孩子都不会工作。不确定我是否必须使用一个奇怪版本的waitpid或者什么。

我该怎么做?

1 个答案:

答案 0 :(得分:3)

致电wait系统电话(或waitpid(-1, &status, 0))。或者等待一些进程组ID(因为所有间接子进程都共享相同的进程组,除非他们更改它)。也许使用setpgid

创建自己的流程组

当孩子退出时,你会得到SIGCHLD signal