我是否正确返回错误状态?

时间:2014-04-01 12:49:09

标签: perl exit-code

我的脚本末尾有这个片段:

use List::Util qw(min max);
// more stuff..
my $maxReturnCode = max @retCodes;
print "Highest Error Code: $maxReturnCode\n";

exit($maxReturnCode >>8) unless $maxReturnCode == 0;
exit(0);

我在线程编译期间添加了错误代码:

my $cmd = "$MAKE $MAKE_INVOCATION_PATH/$comp";
my $retCode = system($cmd);
push(@retCodes, $retCode);

但是,当我在最后打印最高错误代码时,它只是空白:

01-Apr-2014 06:03:25    Ended At: 06:03 AM
01-Apr-2014 06:03:25    
01-Apr-2014 06:03:25    Highest Error Code: 

我转错了吗?

2 个答案:

答案 0 :(得分:1)

system()调用的返回码是 $?

使用$? >> 8获取系统调用的实际退出值。

my $cmd = "$MAKE $MAKE_INVOCATION_PATH/$comp";
my $retCode = system($cmd);
push(@retCodes, $?>>8) if $retCode;

答案 1 :(得分:0)

$maxReturnCode是undef,因为@retCodes为空。要么你从未达到push,要么你有两个名为@retCodes的变量。

您确实提到了线程,您是否尝试通过@retCodes将值从一个线程传递到另一个线程?你分享了吗?