我的脚本末尾有这个片段:
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:
我转错了吗?
答案 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
将值从一个线程传递到另一个线程?你分享了吗?