Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/bash/16.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
shell中的Ruby开放交互子进程_Ruby_Bash_Shell_Curses - Fatal编程技术网

shell中的Ruby开放交互子进程

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中,它打开它,但

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

我可以用
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'

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

是的,谢谢!除了这个系统,我什么都试过了,但都没用,所以现在我知道了问题所在。