问候,所有从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