我正在编写一个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的程序,读取并打印出内容。
./MyProgram
包含什么代码? - Arup Rakshitp Open3.popen3('./MyProgram')
吗? - Arup Rakshit