2010-08-11 64 views
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何時完成? ???應該放在我上面發佈的代碼中嗎?

回答