我在一个 ruby 程序中使用 Open3.popen3 这个方法打开另一个 ruby 程序 t1,并通过 io 流向另一个程序 t2 传递数据,而另一个程序使用 gets 方法来获取这些数据,如下:
# t1.rb
require "open3"
i, o, e, thr = Open3.popen3("jruby D:\\jruby-9.1.12.0\\test\\emtest\\t2.rb")
# 通过i传数据给子进程
i.puts "asdf"
puts '主进程'
Thread.new do
o.each {|l|
puts "从子进程来的数据:#{l}"
}
end
puts "end1"
thr.join
puts "end2"
# t2.rb
STDOUT.puts "123"
r = STDIN.gets
STDOUT.puts "rrr#{r}"
然后我在控制台窗口运行程序 t1,之后就这样一直卡着:
似乎程序 t2 中的 gets 方法并被没有取到数据而把程序阻塞了 请问各位大佬,这种情况要怎么办,是哪里的代码写错了?