【发布时间】:2017-02-22 06:41:02
【问题描述】:
*nix wait() 和 wait_pid() 在演示程序中工作
(1) 一个父亲叉一个孩子,等待孩子退出
(2) 并且等待函数返回。
强调的是,如果父亲不等待继续奔跑,孩子就会退出,成为“僵尸”。
但现实世界的 *nix 编程就像
(1) 我正在写一个服务器程序,
(2) 主进程分叉一些童工,
(3) 这些童工做一些工作然后退出。
那么问题来了,父亲如何处理fork并等待多个孩子?有没有一种方便的方法可以做到这一点,或者设计应该有所不同?
谢谢。
【问题讨论】:
-
你读过
man wait/man waitpid吗? -
父亲不需要等待它的孩子。它可以简单地有一个信号处理程序来捕获 SIGCHILD,并且处理程序可以采取必要的行动。