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
值来解决的问题。
我想使用 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
值来解决的问题。