1
pipe = IO.popen("my_cmd 2>&0")
while ???
line = pipe.gets
puts line if some_condition
end
這是在Windows上使用Ruby 1.8.7。 my_cmd
是一個將數據庫記錄打印到stdout的應用程序。每條數據庫記錄一行,在運行命令之前無法知道有多少條記錄。每個gets
調用返回一個記錄。每個gets
電話也可能需要一段時間。它會通過網絡傳輸到一個非常大的數據庫,所以獲取呼叫將不會是即時的。IO.popen(my_cmd) - 子流程何時完成?
我正在處理輸入就好了。問題是,循環永遠不會結束。
my_cmd
當它到達數據庫的末尾時終止。我的Ruby腳本如何知道my_cmd
何時完成? ???
應該放在我上面發佈的代碼中嗎?
你的意思'!pipe.eof?'? – 2010-08-11 22:01:31
這工作很好。我發誓我已經嘗試過,並沒有奏效。但現在呢! – 2010-08-11 22:03:47