我想通过ruby脚本从命令行运行blender,然后它将逐行处理blender给出的输出,以更新GUI中的进度条。blender是我需要读取其stdout的外部进程并不重要。
当blender进程仍在运行时,我似乎无法捕捉blender通常打印到shell的进度消息,我已经尝试了几种方法。我似乎总是在blender退出后访问blender的stdout,而不是在它还在运行的时候。
这里有一个失败的尝试的例子。它确实获取并打印了blender输出的前25行,但仅在blender进程退出之后:
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。
https://stackoverflow.com/questions/1154846
复制相似问题