別のプログラムを実行し、stdin を介してそれに値を渡し、stdout から応答を読み取り、応答を出力することになっている 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
私は間違いなくここで何か間違ったことをしています - これを実行すると、テキストを入力するのを待っているようです。何かを求められたくない - start./MyProgram
を渡し、 を渡し"hello world!"
、応答を取得し、応答を画面に出力したい。どうすればいいですか?
編集
万が一に備えて、MyProgram
基本的には EOF まで実行し続け、内容を読み込んで出力するプログラムです。