0
Open3.popen3(cmd) do |stdin, stdout, stderr, wait_thread|
    stdout.sync = true;
 
Thread.new do
   stdout.each.with_index {|line, line_no| updateParameters(line) if line_no == $lineStartIndex}
 end

 stdin.puts "e #{$initialState}"

 stdin.puts "e #{$nextState}"
 
 stdin.puts "e #{$nextState}"

 stdin.close

 wait_thread.value
end

在下面的代码中,我想从stdout每个标准输入之后读取数据。我的下一个输入取决于我在最后一个输出中得到什么。我想调用updateParameters()函数来更新nextstate将用于下一个输入的函数。但目前我只有在输入过程完成后才能得到输出。因此nextState没有得到更新,我得到了错误的输出。

我知道目前所有数据都由 ruby​​ 存储在缓冲区中,并且在接收到所有输入后返回整个输出。

但是有没有办法在每个输入命令之后在这里读取输出?

4

0 回答 0