【发布时间】:2019-08-24 13:57:39
【问题描述】:
当我在循环中包含fork() 函数调用时,循环执行的次数超过了预期的时间。为了简单起见,我只选择了两次迭代;您可以进行更多测试。
我尝试设置autoflush on,但这似乎不起作用。
use strict;
use warnings;
use IO::Handle;
$|++; #autoflush on
STDOUT->flush();
for my $i (1 .. 2) {
print "Normal => $i\n";
}
print "\n";
for my $i (1 .. 2) {
my $pid = fork();
if(not defined($pid)) {
die "cannot fork\n";
} elsif (not $pid) {
print "Child => $i\n";
} else {
print "Parent => $i\n";
wait();
}
}
实际输出
Normal => 1
Normal => 2
Parent => 1
Child => 1
Parent => 2
Child => 2
Parent => 2
Child => 2
预期输出
Normal => 1
Normal => 2
Parent => 1
Child => 1
Parent => 2
Child => 2
请帮助我理解这里出了什么问题。
【问题讨论】: