2015-04-28 50 views
2

關閉管道時一個巨大的退出狀態我使用管道是什麼意思,當我在Perl

my $pid = open (OUTPUT, "$my_script") || ""; 
if (! $pid) { 
    die("error"); 
} 
while (<OUTPUT>) { 
    print; 
} 
close (OUTPUT); 
my $exit_status = $?>>8; 
print "$exit_status"; 

有些時候,我弄了半天退出狀態運行腳本:72057594037927935

是什麼這個意思?什麼會造成這種情況?

+1

爲什麼你'>> 8'? – choroba

+1

我猜你正在使用64位版本的Perl。 您發佈的號碼與-1('0xFFFFFFFFFFFFFFFFFF')相同,偏移8位。我認爲'真正'退出狀態是-1。 –

+0

@HermannSchachner謝謝你是對的 – Morad

回答

1

由於$?的值爲-1,您會得到一個很長的數字。右移8位可以獲得大數目。試試這個:

print -1>>8; 

$?-1因爲close()功能由於某種原因失敗,並沒有因爲腳本退出狀態-1退出。

close()成功和腳本-1退出則$?值不會-1,但價值$?>>8255如下所述:Why is the exit code 255 instead of -1 in Perl?

+0

你是對的謝謝你 – Morad