【发布时间】:2015-04-29 16:04:24
【问题描述】:
我使用管道运行脚本
my $pid = open (OUTPUT, "$my_script") || "";
if (! $pid) {
die("error");
}
while (<OUTPUT>) {
print;
}
close (OUTPUT);
my $exit_status = $?>>8;
print "$exit_status";
有时我的退出状态很长:72057594037927935
这是什么意思?是什么原因造成的?
【问题讨论】:
-
我猜你使用的是 64 位版本的 Perl。您发布的数字与移动了 8 位的 -1 (
0xFFFFFFFFFFFFFFFF) 相同。我认为“真正的”退出状态是-1。 -
@HermannSchachner 谢谢你是对的
-
这里出了点问题,因为退出代码必须在
0..255范围内,-1不是有效的退出代码。可能,一些错误检查会有所帮助(在open和close之后)。 -
@salva 你是对的,我无法经常重现这个。我尝试了一个总是以退出状态 -1 退出的脚本,但我得到的是 255 而不是这个长数字......我不知道如何不断重现这个问题
-
@Morad,即使您调用
exit(-1),该值也会被截断为 1 个字节。见exit(3)。