- 论坛徽章:
- 0
|
先贴一个最简单的实现吧
最简单的双向管道的实现。正好朋友有一本UNIX环境高级编程。还在琢磨这部分的空白。
test1.pl
=================
#!/usr/bin/perl -w
use IPC::Open2;
$childpid = open2(*HIS_OUT, *HIS_IN, 'perl test2.pl');
#---------------------------
print HIS_IN "hello";
print HIS_IN "hello\n";
print HIS_IN "hello\n";
print HIS_IN "hello\n";
print HIS_IN "EOF\n";
#------------------------------------
while( <HIS_OUT> ) {
print uc " rint==>$_";
}
close(HIS_IN) and close (HIS_OUT);
#------------------------------------
waitpid($childpid, 1);
test2.pl
===============
#!/usr/bin/perl -w
use IO::Handle;
while (<>){
print "send===>$_" and autoflush STDOUT 1 if( defined($_) and $_ !~ /^EOF$/ ) or close STDOUT and exit;
}
程序输出是这样的
====================================
PRINT==>SEND===>HELLOHELLO
PRINT==>SEND===>HELLO
PRINT==>SEND===>HELLO
在《perl技术内幕》E1章里面有讲双向管道,但是没有完整的例子。
《perl高级编程》(机械工业出版社那本)里面也有讲,但是是用另一种方法。
我就不在这里瞎讲误导别人了,还是留待高手来讲解这部分内容了。
看书去了。
再次感谢你。 |
|