让父母等待所有子进程 [英] Make parent wait for all child processes

查看:115
本文介绍了让父母等待所有子进程的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我希望有人能阐明如何使家长等待所有的子进程后叉继续之前完成一些轻。我有清理code,我想运行,但子进程需要有返回之前会发生这种情况。

 的for(int n = 0; ID和LT; N; ID ++){
  如果(叉()== 0){
    //子
    出口(0);
  }其他{
    //父
    ...
  }
  ...
}


解决方案

POSIX定义一个函数:等待(NULL); 。它是 waitpid函数(-1,NULL,0)的简写; ,这将阻塞,直到所有的孩子处理退出

在你的情况,有家长从内部调用它的其他分支。

I'm hoping someone could shed some light on how to make the parent wait for ALL child processes to finish before continuing after the fork. I have cleanup code which I want to run but the child processes need to have returned before this can happen.

for (int id=0; id<n; id++) {
  if (fork()==0) {
    // Child
    exit(0);      
  } else {
    // Parent
    ...
  }
  ...
}

解决方案

POSIX defines a function: wait(NULL);. It's shorthand for waitpid(-1, NULL, 0);, which will block until all children processes exit.

In your case, have the parent call it from within your else branch.

这篇关于让父母等待所有子进程的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆