我在Ruby脚本中运行以下(备份)代码:
for directory in directories
print `s3sync.rb --exclude="#{EXCLUDE_REGEXP}" --delete --progress -r #{directory} my.amazon.backup.bucket:#{directory}`
end
我希望执行的子进程的输出实时回显到终端(而不是必须等到子进程返回)。我该怎么做?
答案 0 :(得分:4)
IO.popen
创建一个进程并返回此进程的stdin和stdout的IO对象。
IO.popen("s3sync.rb …").each do |line|
print line
end
答案 1 :(得分:2)
如果您不需要代码来查看标准输出,并且人类看到它就足够了,那么系统就可以了。如果你需要你的代码来看它,有很多解决方案,popen是最简单的,让你的代码访问stdout,Open3让你的代码访问stdout和stderr。请参阅:Ruby Process Management
答案 2 :(得分:0)
这就是我想要的:
for directory in directories
exec `s3sync.rb --exclude="#{EXCLUDE_REGEXP}" --delete --progress -r #{directory} my.amazon.backup.bucket:#{directory}`
end