2014-02-13 159 views
1

運行sdiffexec會導致我的腳本無錯地退出。即使是保證塊沒有得到執行:`exec`殺死腳本

begin 
    puts "I occur" 
    exec("sdiff onefile.csv anotherfile.csv > filediffs.txt") 
rescue Exception => e 
    puts "I do not get printed" 
    puts e 
ensure 
    puts "I do not get printed" 
end 
puts "I used to get printed, repeatedly, now not, repeatedly" 

它按預期工作了一段時間,然後就開始神祕地退出和條件是相同的。 「我發生」後沒有終端輸出。

+0

啊,我一定誤會繼續運行它後面的代碼 – xxjjnn

回答

1

這是exec方法的預期行爲,將documentation一下說:

通過運行給定的外部命令

你可能想使用system而不是替換當前的進程exec

1

exec將通過作爲參數傳遞給它的命令替換當前進程。 exec()已執行後,調用過程將不再存在。

查詢this供參考和選擇。