【发布时间】:2010-06-21 19:43:06
【问题描述】:
我有一个带有以下代码的 Perl 脚本。
...
$kill = 1;
$exit = 0;
`kill -9 $pid >& /dev/null`;
...
print "kill=$kill exit=$exit\n";
if ($kill) {
exit $exit;
} else {
...
总之,这个脚本使用 open3() 来运行一个命令。在某些时候,它会终止作业,然后意图是脚本将以代码 0 退出。我插入了一个打印语句来显示变量 $kill 和 $exit 的值,如下所示。
kill=1 exit=0
由于$kill 是1,我希望脚本以上面的代码0 退出,因为$exit 是0。但是,脚本以代码9 退出,这是发送给孩子的信号。为什么 Perl 脚本以子程序的退出代码退出,而不是提供给 exit() 调用的代码?
【问题讨论】:
-
正交,但除非在最紧急的情况下,否则将 -9 用作
kill参数并不是一个好主意。您拒绝进程执行任何可能需要的清理任务的权利。
标签: perl