【发布时间】:2017-02-16 15:30:45
【问题描述】:
如何立即输出stdout? stdout 将在所有输入完成后打印。
require 'open3'
def run(cmd)
Open3.popen3(cmd) do |stdin, stdout, stderr, thread|
Thread.new do
stdout.each {|l| puts l}
end
Thread.new do
while thread.alive?
stdin.puts $stdin.gets
end
end
thread.join
end
end
run ("ruby file_to_test.rb")
file_to_test.rb:
puts "please, enter s"
puts "please, enter q"
s = gets.chomp!
q = gets.chomp!
puts s
puts q
运行main.rb后的结果是:
somestring
somestring2
please, enter s
please, enter q
somestring
somestring2
如何立即输出stdout?
【问题讨论】:
-
也许您正在寻找flush?
-
@pjs 是的,我看到了这个,但它不想工作,或者我使用它不正确......
-
您在每个
print或puts之后放置了$stdout.flush或STDOUT.flush?