我想從運行紅寶石耙腳本可執行文件,說foo.exe
產卵紅寶石的過程,捕捉標準輸出,標準錯誤,獲得存在狀態
我想從foo.exe
的STDOUT
和STDERR
輸出直接寫入控制檯我正在運行rake任務。
當進程完成後,我想將退出代碼捕獲到一個變量中。我如何實現這一目標?
我一直在玩backticks
,process.spawn
,system
但我不能得到我想要的行爲,只有部分
更新:我在Windows上,在一個標準的命令提示符,而不是在cygwin
我想從運行紅寶石耙腳本可執行文件,說foo.exe
產卵紅寶石的過程,捕捉標準輸出,標準錯誤,獲得存在狀態
我想從foo.exe
的STDOUT
和STDERR
輸出直接寫入控制檯我正在運行rake任務。
當進程完成後,我想將退出代碼捕獲到一個變量中。我如何實現這一目標?
我一直在玩backticks
,process.spawn
,system
但我不能得到我想要的行爲,只有部分
更新:我在Windows上,在一個標準的命令提示符,而不是在cygwin
system
得到你想要的STDOUT
行爲。它也返回true
爲零退出代碼,這可能是有用的。
$?
與有關最後system
呼叫信息填充,因此您可以檢查的退出狀態:
system 'foo.exe'
$?.exitstatus
我用這些東西的組合,Runner.execute_command
爲例。
原來我沒有需要STDERR,所以我不能驗證這_does_處理它,但它適用於我的需要 –
反引號將得到stdout
捕獲到生成的字符串
foo.exe
建議你運行的是Windows - 你有沒有安裝像Cygwin的東西嗎?如果你unixy外殼的內部運行腳本,你可以這樣做:
result = `foo.exe 2>&1`
status = $?.exitstatus
快速谷歌搜索說,這也應該在本地Windows工作外殼,但我不能對此進行測試assupmtion
對於'2>&1' +1,偷偷摸摸! –
「Kernel#system」未涵蓋哪部分內容? –
我知道和openSSL一起工作的'Net-SSH'純ruby庫具有這樣的功能 - 'channel'的'exec'方法返回'[stdout,stderr,exit_code,exit_signal]'的數組。也許你可以以某種方式使用它... – Ribtoks
也許你應該列出你的每個命令的問題? –