当前位置: 技术问答>linux和unix
如何等待多个子进程返回
来源: 互联网 发布时间:2016-04-08
本文导语: 请问有没函数可以真正等待多个子进程返回,而不是用循环的wait族函数来实现? | 使用信号量,而不是信号是可以实现的。 比如一个信号量,初始值为0,父进程再fork子进程时,执行V操作,假设fork了3...
请问有没函数可以真正等待多个子进程返回,而不是用循环的wait族函数来实现?
|
使用信号量,而不是信号是可以实现的。
比如一个信号量,初始值为0,父进程再fork子进程时,执行V操作,假设fork了3个子进程,那么此时信号量取值为3.
子进程在结束时对信号量执行P操作,当一个子进程结束时,信号量将等于2,当2个子进程结束时,信号量等于1,当3个子进程全部结束时,信号量等于0.
父进程在fork完成后,立刻对信号量进行Z操作,就是等待信号量为0的操作,这个是阻塞操作,只有当信号量等于0时才返回,也就是说只有当3个子进程全部结束时,父进程才继续执行。
——————————————————————————————
《精通Unix下C语言编程与项目实践》
本书以实际应用为目标,直接讲述在产生中最有可能知识,并提供可直接使用的应用编程模板,对初学者尤其有帮助。
本人博客地址:http://zhuyunxiang.csai.cn
|
没有直接这样的调用接口,
你可以自己封装一个。
如
void WaitAllChildEnd()
{
pid_t pid;
int status;
while(1)
{
pid = wait(&status);
if (pid
你可以自己封装一个。
如
void WaitAllChildEnd()
{
pid_t pid;
int status;
while(1)
{
pid = wait(&status);
if (pid