[英]Ruby: Need the output of a command-line tool that's killed if it hangs
我有一些運行命令行工具的代碼。 我想捕獲此工具的輸出,以便可以檢查它的錯誤消息,但是命令行位也可以掛起,因此如果花費太長時間,則需要將其終止。
我不需要流式訪問命令的輸出(不是很冗長),而僅是結果。
有什么好方法嗎?
我可以通過使用back-tic調用該工具來獲得輸出,並且可以將其包裝在Thread
或Process
以殺死它,如果它花費的時間太長,那么我不確定如何獲得結果。
哦,對了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.