Perl:如果子进程在父进程中处理$ SIGCHLD}期间终止,则STDIN会很奇怪

时间:2014-06-29 07:48:23

标签: perl fork signal-processing sigchld

在此代码中,此父进程分叉5个子进程,然后在无限循环中将STDIN回送到STDOUT。但是在2个子进程同时终止后,从STDIN读取总是立即返回。看起来它变成了非阻塞,但我猜不是。请有人告诉我有什么问题?!

$SIG{CHLD} = sub{print "child is dead\n"};
for my $i(1..5)
{
    if(!fork){
        $SIG{CHLD} = "DEFAULT";
        sleep 5;
        exit(0);
    }
}
while(1){
    my $line = <>;
    print "$$:". $line ."\n";
}

0 个答案:

没有答案