首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >在Ruby中连续读取外部进程的STDOUT

在Ruby中连续读取外部进程的STDOUT
EN

Stack Overflow用户
提问于 2009-07-20 17:33:05
回答 6查看 34.5K关注 0票数 88

我想通过ruby脚本从命令行运行blender,然后它将逐行处理blender给出的输出,以更新GUI中的进度条。blender是我需要读取其stdout的外部进程并不重要。

当blender进程仍在运行时,我似乎无法捕捉blender通常打印到shell的进度消息,我已经尝试了几种方法。我似乎总是在blender退出后访问blender的stdout,而不是在它还在运行的时候。

这里有一个失败的尝试的例子。它确实获取并打印了blender输出的前25行,但仅在blender进程退出之后:

代码语言:javascript
复制
blender = nil
t = Thread.new do
  blender = open "| blender -b mball.blend -o //renders/ -F JPEG -x 1 -f 1"
end
puts "Blender is doing its job now..."
25.times { puts blender.gets}

编辑:

为了更清楚一些,调用blender的命令在shell中返回一个输出流,指示进度(第1-16部分完成等)。似乎对“get”输出的任何调用都会被阻塞,直到blender退出。问题是如何在blender仍在运行时访问此输出,因为blender将其输出打印到shell。

EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/1154846

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档