«Answering a cli prompt in ruby with open3?» - это возможный дублирующий вопрос, но у него нет ответа.Имитация команд командной строки
Мне нужно написать программу, которая компилирует и выполняет программу на языке C, дает входы и возвращает результат. До сих пор я пришел с этим:
Для одного входа:
Open3.popen3('one.exe') do |stdin, stdout, stderr|
stdin.puts "45\n"
STDOUT.puts stdout.gets
end
и выходов:
Enter the temperature in degrees fahrenheit: The converted temperature is 7.222222
Для двух или более входов:
Open3.popen3('two.exe') do |stdin, stdout, stderr|
stdin.puts "45 45"
# This line works the same as the previous one.
# stdin.puts "45\r\n45"
stdin.close
STDOUT.puts stdout.gets
end
и выход:
Enter first number: Enter second number: Sum is 90
Проблема заключается в том, что я не вернусь входы я вставил в.
Есть ли способ я могу исправить это или, может быть, лучший способ сделать это?
Спасибо за ваш ответ. Я пробовал выше примеров, и они работают так, как ожидалось, поэтому я возвращаюсь к своей первоначальной задаче, содержимое ** temp.rb **: 'puts% x [sh ./test.sh