我有一个带有以下代码的Perl脚本。
...
$kill = 1;
$exit = 0;
`kill -9 $pid >& /dev/null`;
...
print "kill=$kill exit=$exit\n";
if ($kill) {
exit $exit;
} else {
...
总之,此脚本使用open3()来运行命令。在某些时候,它会终止工作,然后意图是脚本将以代码0退出。我插入了一个print语句来显示变量$kill
和$exit
的值,如下所示。
kill=1 exit=0
由于$kill
为1,我希望脚本以上面的代码0退出,因为$exit
为0.但是,脚本以代码9退出,这是发送给孩子的信号。为什么Perl脚本会退出子项的退出代码,而不是exit()
调用的退出代码?
答案 0 :(得分:0)
来自here:
exit()函数并不总是立即退出。它首先调用任何已定义的END例程,但这些END例程本身可能不会中止退出。同样,任何需要调用的对象析构函数都会在实际退出之前调用。