Chinaunix首页 | 论坛 | 博客
  • 博客访问: 435299
  • 博文数量: 79
  • 博客积分: 8385
  • 博客等级: 中将
  • 技术积分: 3625
  • 用 户 组: 普通用户
  • 注册时间: 2005-09-26 14:42
文章分类

全部博文(79)

文章存档

2011年(10)

2010年(40)

2009年(21)

2008年(8)

分类:

2009-07-29 16:06:04

http://hi.baidu.com/zhujian0805/blog/item/75f50c09412791a72eddd450.html

使用pipe在 perl 父子进程共享数据

使用pipe在 perl 父子进程共享数据 实例
-------------------------------------------------------------------------------------------------------------------

#!/usr/bin/perl
use Net::Ping;

#本函数用来将不能ping同的节点打印到pipe
sub ping_action(){
$p = Net::Ping->new();
if(!$p->ping($_[0],3)){
        print $_[0];
}
}

@nodename=("hostname1","hostname2","hostname3");
for(@nodename){
#设置管道
pipe(RD,WT) or die "Can't open pipe: $!\n";
$node = $_;
#创建子进程
if(fork == 0){
        close RD;
        select WT; $| = 1;
#数据写入管道
        &ping_action($node);
        exit 0;
}else{
close WT;
while(){
#在父进程中从管道读取子进程写的数据数据
        push @nodes,$_;
}
}
}

#最后在在所有进程结束后吧结果打印出来
grep { print $_; } @nodes;
阅读(883) | 评论(0) | 转发(1) |
给主人留下些什么吧!~~