簡體   English   中英

Ruby:需要一個命令行工具的輸出,如果掛起,該輸出將被殺死

[英]Ruby: Need the output of a command-line tool that's killed if it hangs

我有一些運行命令行工具的代碼。 我想捕獲此工具的輸出,以便可以檢查它的錯誤消息,但是命令行位也可以掛起,因此如果花費太長時間,則需要將其終止。

我不需要流式訪問命令的輸出(不是很冗長),而僅是結果。

有什么好方法嗎?

我可以通過使用back-tic調用該工具來獲得輸出,並且可以將其包裝在ThreadProcess以殺死它,如果它花費的時間太長,那么我不確定如何獲得結果。

哦,對了Thread.value求值到線程中最后一個表達式的輸出,並且join需要一個時間限制。 如此簡單:

thread = `Thread.new{ `command options` }.join(180)
results = thread.value unless thread.nil?

需要執行nil檢查,因為如果您殺死線程,您將得到nil

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM