shell中的Ruby开放交互子进程
我想使用ruby,在一瞬间打开另一个程序(cfdisk),让用户与之交互,然后返回到我的代码 我可以用shell中的Ruby开放交互子进程,ruby,bash,shell,curses,Ruby,Bash,Shell,Curses,我想使用ruby,在一瞬间打开另一个程序(cfdisk),让用户与之交互,然后返回到我的代码 我可以用 exec“cfdisk;ruby-other.rb” 但这是非常令人讨厌的,肯定不是正确的做法 我知道Open3,但我不知道如何在我的用例中正确使用它。我知道当我在Windows的irb上使用capture3时,它会说: [“在虚拟控制台下运行,启用256/真彩色支持\n”,“不支持屏幕大小28640x499;限制500x500。\n请检查术语环境变量。\n”,#] 在Arch中,它打开它,但
exec“cfdisk;ruby-other.rb”
但这是非常令人讨厌的,肯定不是正确的做法
我知道Open3,但我不知道如何在我的用例中正确使用它。我知道当我在Windows的irb上使用capture3
时,它会说:
[“在虚拟控制台下运行,启用256/真彩色支持\n”,“不支持屏幕大小28640x499;限制500x500。\n请检查术语环境变量。\n”,#]
在Arch中,它打开它,但图形输出不存在,击键被注册,它们工作(例如,mc使用F10退出),但窗口不在那里,只是闪烁的光标
分道扬镳
我试过popen3,但也没成功这个案例的
系统有什么问题
exec
ruby命令替换正在运行的进程,因此它不会返回到代码中
- 当您想要捕获stdout和stderr时,将使用
Open3
库
这不是你要找的吗
puts "here"
system "cfdisk"
puts 'there'
如果您有一些与屏幕相关的问题,这是另一个问题,您可以使用环境变量中不同的术语值来解决。是的,谢谢!除了这个系统,我什么都试过了,但都没用,所以现在我知道了问题所在。