我正在编写一个 ruby 程序,它应该执行另一个程序,通过标准输入将值传递给它,从它的标准输出读取响应,然后打印响应。这就是我到目前为止所拥有的。
#!/usr/bin/env ruby
require 'open3'
stdin, stdout, stderr = Open3.popen3('./MyProgram')
stdin.puts "hello world!"
output = stdout.read
errors = stderr.read
stdin.close
stdout.close
stderr.close
puts "Output:"
puts "-------"
puts output
puts "\nErrors:"
puts "-------"
puts errors
我在这里肯定做错了什么 - 当我运行它时,它似乎在等待我输入文本。我不想被提示任何事情——我想开始./MyProgram
、传入"hello world!"
、取回响应,然后在屏幕上打印响应。我该怎么做呢?
编辑
以防万一,MyProgram
基本上是一个程序,它一直运行到 EOF,读入并打印出东西。