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

Ruby open interactive sub process within the shell

我想使用 ruby 一会儿打开另一个程序 (cfdisk) 让用户与之交互,然后 return 我的代码

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

但这很老套,肯定不是正确的做法

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

["Running under a virtual console, enabling 256/true-color support\n", "Screen size 28640x499 is not supported; limit 500x500.\nCheck the TERM environment variable.\n", #]

在 Arch 中它打开它但图形输出不存在,击键被注册,它们工作(例如 mc 使用 F10 退出)但是 window 不存在,只是闪烁的光标。

parted 立即退出

尝试过 popen3,但我也没有成功

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

  • exec ruby 命令替换了 运行 过程,因此它不会 return 您的代码。
  • Open3 库用于捕获 stdout 和 stderr。

这不是你要找的吗?

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

如果您有一些与屏幕相关的问题,这是另一个您可以使用环境变量中的不同 TERM 值来解决的问题。