+ -
当前位置:首页 → 问答吧 → 主进程如何等待多个子进程结束

主进程如何等待多个子进程结束

时间:2010-08-19

来源:互联网

主进程如何等待多个子进程结束
想完成这样的任务:
在主进程中创建多个子进程(比如3个),各个进程完成不同的任务,
现在想要等所有子进程都结束主进程才执行后面的语句,
如何实现这样的操作?
#!/usr/bin/perl
use POSIX ":sys_wait_h";
my $a=10;
for($i=1;$i<=3;$i++){
my $pid=fork();
  if (!defined($pid)) {
        print "Error in fork: $!";
        exit 1;
    }
   if ($pid == 0 ) {
        if($i==1){
        sleep(9);
        $b1=$a+1;
        print "$b1\n";
        exit 0;}
        elsif($i==2){
        sleep(5);
        $b2=$a+10;
        print "$b2\n";
        exit 0;}
        else{
        sleep(3);
        $b3=$a+100;
        print "$b3\n";
        exit 0; }
}
     if ($zombies > 0) {
        while (($collect = waitpid(-1, WNOHANG)) > 0) {
            $zombies --;
        }
   }
}
print "~~~~~~~~~~split~~~~~~~~~~~\n";
print "$b1\t$b2\t$b3\n";
只是一个简单的例子,不是为了实现这个结果,而是为了实现子进程都结束主进程才执行后面的语句。

作者: zhuxiaolong2   发布时间: 2010-08-19

先把子进程PID保存下来,然后waitpid

作者: toniz   发布时间: 2010-08-19