Ruby在Shell中打开交互式子进程

时间:2019-01-12 18:40:32

标签: ruby bash shell curses

我想使用ruby,并在一瞬间打开另一个程序(cfdisk),让用户与它进行交互,然后返回我的代码

我可以使用 exec "cfdisk; ruby another.rb"

但这是很棘手的事情,当然不是正确的选择

我了解Open3,但我不知道如何在用例中正确使用它。我知道,当我在Windows的irb上使用capture3时,它说:

  

[“在虚拟控制台上运行,启用256 /真彩色支持\ n”,“不支持屏幕尺寸28640x499;限制为500x500。\ n请检查TERM环境变量。\ n”,#]

在Arch中,它打开了它,但是没有图形输出,注册了击键,它们可以工作(例如mc退出并显示F10),但是窗口不在那里,只是光标闪烁。

分手立即退出

尝试过popen3,但我也没有运气

1 个答案:

答案 0 :(得分:0)

在这种情况下,system有什么问题?

  • exec ruby​​命令将替换正在运行的进程,因此它不会返回您的代码。
  • 要捕获stdout和stderr时,使用Open3库。

这不是您想要的吗?

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

如果您遇到一些与屏幕相关的问题,则可以使用环境变量中的其他TERM值解决此问题。