如何让子进程向父进程传输数据

 我来答
就烦条0o
2018-01-17 · 知道合伙人软件行家
就烦条0o
知道合伙人软件行家
采纳数:33315 获赞数:46493
从事多年系统运维,喜欢编写各种小程序和脚本。

向TA提问 私信TA
展开全部
# create a pipe for IPC
pipe(CHILD_READ,CHILD_WRITE) or die "Can't make pipe!\n";

#-- Parent Process maintain read the input of child
my $IN = IO::Select->new(\*CHILD_READ);
$SIG{CHLD} = \&reap_child;

while(!$DONE){
  if($IN->can_read){    # get a message from one of the children
    my $message;
    next unless sysread(CHILD_READ,$message,4096);
    my @messages = split /\n/,$message;
    foreach (@messages){
       next unless my ($pid,$status) = /^(\d+) (.+)$/;
       if($status ne 'done'){
         $STATUS{$pid} = $status;
       }else{
         delete $STATUS{$pid};
       }
    }
  }
  print join(" ",map {"$_ => $STATUS{$_}"} keys %STATUS )."\n";
  #----- do nothing,if no child alive, -----
  unless(%CHILDREN){
     $normal = 1;
     last;
  }
}
##-------假如非正常结束,必须删除所有子程序
if($normal ==0){ kill_children(); exit 1;}
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式