【发布时间】:2011-01-21 13:35:36
【问题描述】:
考虑以下脚本:
use IO::File;
$| = 1;
my ($handle, $pid) = myPipe();
if ($pid == 0) {
print "$$";
sleep 5;
exit;
}
print "child: ".<$handle>."\n";
sub myPipe {
my $handle = new IO::File();
my $pid = open($handle, "-|");
return ($handle, $pid);
}
在这种情况下,“child:”消息在进程启动后的 5 秒内不会出现。如果我从分叉的孩子那里删除睡眠呼叫,那么它会立即打印。为什么分叉的孩子必须退出管道才能冲洗到父母?
【问题讨论】: