我想通过ruby脚本从命令行运行blender,然后逐行处理blender给出的输出以更新GUI中的进度条.混合器是我需要读取的stdout的外部进程并不重要.
当blender进程仍在运行时,我似乎无法捕获blender正常打印到shell的进度消息,并且我尝试了几种方法.在搅拌机退出后,我似乎总是访问搅拌机的标准配置,而不是在它仍在运行时.
这是尝试失败的一个例子.它确实得到并打印了搅拌机输出的前25行,但只有在搅拌机过程退出后:
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}
Run Code Online (Sandbox Code Playgroud)
编辑:
为了使它更清晰一点,调用blender的命令会在shell中返回一个输出流,指示进度(第1-16部分已完成等).似乎任何"获取"输出的调用都会被阻止,直到混合器退出为止.问题是如何在blender仍在运行时访问此输出,因为blender将其输出打印到shell.
我有一个不断增长的日志文件.如何通过Ruby脚本观察和解析它?
该脚本将在写入文件时解析每个新行,并在新行包含字符串'ERROR'时将某些内容输出到屏幕