請看下面的代碼:爲什麼我的父進程沒有看到孩子的輸出,直到它退出?
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);
}
在這種情況下,「孩子:」進程啓動後消息未出現,持續5秒。如果我從分叉的孩子中刪除睡眠呼叫,則立即打印。爲什麼分叉的孩子必須退出管道才能沖洗父母?
感謝您的徹底解答。後來我意識到使用<>會需要換行符。 – dromodel 2010-02-28 15:01:02