說我有一個像下面這樣的函數,如何捕獲Process.spawn調用的輸出?如果超過指定的超時時間,我也應該能夠終止進程。Fork子進程超時和捕獲輸出
請注意,該功能還必須是跨平臺的(Windows/Linux)。
def execute_with_timeout!(command)
begin
pid = Process.spawn(command) # How do I capture output of this process?
status = Timeout::timeout(5) {
Process.wait(pid)
}
rescue Timeout::Error
Process.kill('KILL', pid)
end
end
謝謝。
完美!正是我所追求的,比我的解決方案更優雅:) – thegreendroid
'_,'在這段代碼中意味着什麼? –
@TamerShlash讀取'Process.wait2'文檔,它返回一個元組(兩個值),我們將其中一個賦給'status',另一個(第一個)賦給_,這是您想要丟棄時的慣例一個值。 –