2011-01-07 64 views
0

我有一個ruby腳本,通過反引號執行另一個ruby腳本。就像這樣:紅寶石backtick'd代碼退出136?

output = `#{name}/#{sccript} --list` 

在某些情況下(我在一個二進制包的編譯時間運行這一點,並有相同的腳本運行的多個實例),這將失敗。

輸出爲0 lenght和$?設置爲136

任何想法會導致什麼呢?

回答

7

Exit code 136位於129-255的範圍內,表示由Unix信號終止的作業。

要找出哪個信號,減去128,並找到它的信號8:SIGFPE。一個可能的原因可能是C程序中整數除零。

1

反引號總是返回任何呼叫的標準輸出將是,如果你只是想真的還是假的,使用的系統:

ruby-1.9.2-p0 :009 > \`echo "hello"\` 
=> "hello\n" 
ruby-1.9.2-p0 :010 > system("echo 'hello'") 
hello 
=> true 

所以,回答你的問題「136」是無論你的腳本返回

+2

你給出了一個關於文本輸出的答案,但他報告說退出代碼('$?`)是136. – 2011-01-07 16:16:16

+0

是的,無關。 – rasjani 2011-01-08 01:29:21