- 论坛徽章:
- 0
|
我将文件句柄的$|置为1了。我用子进程打开一个文件句柄读取一个大小为499K的文件,用父进程打开另一个句柄将内容输出至标准输出上,没有发生中断。程序如下:
pipe(READER,WRITER) || die "can't open pipe(): $!\n";
my $child = fork();
die "can't fork: $!\n" unless defined $child;
if($child == 0)
{
close READER;
select WRITER;
$| = 1;
open FILE,"/tmp/Report.csv" or die "can't open(): $!\n";
my $len = 0;
while(<FILE>)
{
print $_;
chomp;
$len += length($_);
}
print "\n\nthere are $len bytes";
close FILE;
exit 0;
}
else
{
close WRITER;
print while(<READER>);
}
这样就应该没有问题吧,属于一边写一边读吗吧,不会发生死锁吧!是不是每读后一次就将管道中的内容清空,释放管道中的空间? |
|