問候,所有從stdout和外部進程的標準錯誤大的數據,紅寶石:閱讀在Windows
我需要在Windows上運行,從紅寶石1.9.2潛在的長期運行的進程,並隨後捕獲和分析數據來自外部過程的標準輸出和錯誤。大量的數據可以發送給每個數據,但是我一次只對一行感興趣(不捕獲和存儲整個輸出)。
了一些研究之後,我發現Open3 class將採取執行過程,並給了我(通過popen3)連接到進程的標準輸出和錯誤IO
對象的照顧。
Open3.popen3("external-program.bat") do |stdin, out, err, thread|
# Step3.profit() ?
end
但是,我不知道如何在不阻止程序的情況下連續讀取兩個流。由於out
或err
上調用IO#readlines
當大量數據已發送導致內存分配錯誤,我試圖不斷檢查兩個流的可用輸入,但沒有太多的運氣與我的任何實現。
在此先感謝您的任何建議!
你能指定Ruby的版本嗎? Open3在1.8.7中被破解,並且需要win32-open3 gem代替 – 2011-01-11 19:15:02