我在获取子进程的退出状态时遇到了一些麻烦。由于某种原因, kill 0, $pid 方式似乎不起作用。我在 Unix 机器上运行以下脚本:
for ( my $count = 1; $count <= 2; $count++) {
my $pid = fork();
if ($pid) {
# parent
push(@childs, $pid);
} elsif ($pid == 0) {
# child
sleep(10);
exit 0;
} else {
die "couldnt fork: $!\n";
}
}
foreach (@childs) {
if (kill 0, $_){
print "$_ is running...\n";
}
else {
print "$_ is complete\n";
}
}
sleep (20);
foreach (@childs) {
if (kill 0, $_){
print "$_ is running...\n";
}
else {
print "$_ is complete\n";
}
}
我得到的打印是:
23285 正在运行...
23286 正在运行...
23285 正在运行...
23286 正在运行...
任何人都可以解释为什么这不起作用,并可能提出解决方案或解决方法吗?
非常感谢!