Я пишу программу ruby, которая должна выполнять другую программу, передавать ей значения через stdin, читать ответ со своего stdout и затем печатать ответ. Это то, что у меня есть до сих пор.Ruby: Напишите на stdin и прочитайте с stdout?
#!/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!"
, вернуть ответ и распечатать ответ на экране. Как мне это сделать?
EDIT
Только в случае, если это имеет значение, MyProgram
в основном программа, которая не продолжает работать до конца файла, чтение в и распечатав вещи.
Какой код '/ MyProgram' содержит.? –
Это имеет значение? – Kvass
Можете ли вы сделать просто 'p Open3.popen3 ('./ MyProgram')'? –