#!/usr/bin/perl
use POSIX ":sys_wait_h";
$SIG{CHLD} = \&REAPER;
sub REAPER {
my $pid;
while (($pid = waitpid(-1, WNOHANG)) > 0) {
print "where is here,$pid\n";
}
}
sub child {
print "I'm child, pid=$$.\n";
sleep 2;
}
$lid = fork();
if ($lid == 0) {
&child;
exit;
} else {
sleep 1000;
print "I am parent, child pid : $lid\n";
}
输出:
I'm child, pid=11839.
where is here,11839
I am parent, child pid : 11839
以上是我的 Perl 脚本。输出是正确的,但奇怪的是它I am parent, child pid : 11839
在最后一次输出之后立即打印。为什么没有sleep 1000
任何效果?