c - parent 如何等待所有子进程完成然后在收到 SIGINT 时退出?

标签 c unix fork signals

我正在用 C 编写一个多进程程序。

我希望父进程可以等待所有子进程完成然后退出 它收到 SIGINT。

我有两个问题。

  1. parent 如何记录它 fork 的子进程的每个 pid。 子进程可能会在录制功能运行之前完成 主要过程。

  2. 如果 parent 不知道它有多少个子进程。他怎么等 所有子进程完成。

提前致谢。

最佳答案

您在派生子进程时记录它们的 pid(如果需要)。 在 pid = 0 的循环中调用 waitpid 它将返回退出的进程的 pid 或返回 -1 并且如果 errno = ECHILD 你没有留下任何奴隶。

关于c - parent 如何等待所有子进程完成然后在收到 SIGINT 时退出?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7545916/

相关文章:

c - 服务器接收消息并从小写转换为大写

unix - 比较目录 a 和 b。只显示 b 中的文件,不显示 a 中的文件

检查子进程的状态

创建一个程序来计算系统中的最大进程数

linux - 如何在linux中用c++调用 "unlimit"

c - PROCESS SYSTEM CALL中PID的变量类型是什么?

c - c中多个范围之间的随机数

c - 删除链表中的节点

c - 来自 getaddrinfo() 的 4 错误的无效读取大小

在C中将大整数转换为 float