Ruby открытый интерактивный подпроцесс внутри оболочки - PullRequest
0 голосов
/ 12 января 2019

Я хочу использовать ruby ​​и в один момент открыть другую программу (cfdisk) и позволить пользователю взаимодействовать с ней, а затем вернуться к моему коду

Я могу использовать exec "cfdisk; ruby another.rb"

но это очень глупо и, конечно, не правильно

Я знаю о Open3, но я не знаю, как правильно использовать его для моего использования. Я знаю, что когда я использую capture3 на irb в Windows, он говорит:

["Запуск под виртуальной консолью, включение поддержки 256 / true-color \ n", "Размер экрана 28640x499 не поддерживается; ограничение 500x500. \ NПроверьте переменную среды TERM. \ N", #]

В Arch он открывает его, но графический вывод отсутствует, нажатия клавиш зарегистрированы, они работают (например, mc выходит с помощью F10), но окна там нет, просто мигает курсор.

немедленно расстался с выходом

Попробовал popen3, но мне тоже не повезло

1 Ответ

0 голосов
/ 13 января 2019

Что не так с system для этого случая?

  • Команда exec ruby ​​заменяет запущенный процесс, поэтому он не вернется к вашему коду.
  • Библиотека Open3 используется, когда вы хотите захватить stdout и stderr.

Разве это не то, что вы ищете?

puts "here"
system "cfdisk"
puts 'there'

Если у вас есть некоторые проблемы, связанные с экраном, это еще одна проблема, которую вы могли бы решить с другим значением TERM в переменной среды.

...