将“use POSIX ":sys_wait_h";”去掉,还有在主进程中打印子进程中的变量是不对的,主进程不知道子进程的状况,除非你用pipe将变量值传给主进程, ################################################## #!/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\t"; exit 0;} elsif($i==2){ sleep(5); $b2=$a+10; print "$b2\t"; exit 0;} else{ sleep(3); $b3=$a+100; print "$b3\t"; exit 0; } } } print "~~~~~~~~~~split~~~~~~~~~~~\n"; while (($collect = waitpid(-1,WNOHANG)) > 0) { 1; } ##################### 输出 ########## bsd2# perl test.pl ~~~~~~~~~~split~~~~~~~~~~~ 110 20 11 bsd2#
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。