为什么我会收到意外的返回码?

时间:2010-06-21 19:43:06

标签: perl

我有一个带有以下代码的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()调用的退出代码?

1 个答案:

答案 0 :(得分:0)

来自here

  

exit()函数并不总是立即退出。它首先调用任何已定义的END例程,但这些END例程本身可能不会中止退出。同样,任何需要调用的对象析构函数都会在实际退出之前调用。

相关问题