我使用管道运行脚本
my $pid = open (OUTPUT, "$my_script") || "";
if (! $pid) {
die("error");
}
while (<OUTPUT>) {
print;
}
close (OUTPUT);
my $exit_status = $?>>8;
print "$exit_status";
有时我获得长退出状态:72057594037927935
这是什么意思?什么可能导致这种情况?
答案 0 :(得分:1)
你得到一个很长的数字,因为$?
的值是-1。右移8位会产生大量数据。试试这个:
print -1>>8;
$?
为-1
,因为close()
函数由于某种原因失败,而不是因为脚本以退出状态-1
退出。
当close()
成功并且脚本以-1
退出时,$?
的值不会是-1
,但值$?>>8
将是255
如此处所述:Why is the exit code 255 instead of -1 in Perl?