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

标签 c process exit wait

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

我基本上有一个 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/

相关文章:

c - 在 c 中将 char 作为参数传递

linux - 绩效评估中的异常值

c++ - 拦截 WM_CLOSE 进行清理操作

bash - 基于 bash 中循环操作的带有错误代码的退出脚本

c - *(q + i * col + j)在此C程序中如何工作?

C 中的 CRC 计算 - 向 Ross Williams 库添加单位函数

C - 将用户输入扫描到要排序的数组中

c# - Process.Close() 和 Process.Dispose() 有什么区别?

windows - Taskkill/f 不会终止进程

init - __init 和 __exit 宏用于内置和可加载模块