【问题标题】:Ruby open interactive sub process within the shellRuby在shell内打开交互式子进程
【发布时间】:2019-01-12 18:40:31
【问题描述】:

我想使用 ruby​​ 并立即打开另一个程序(cfdisk)并让用户与之交互,然后返回我的代码

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

但这很不靠谱,而且肯定不是正确的做法

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

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

在 Arch 中它会打开它,但图形输出不存在,按键已注册,它们可以工作(例如 mc 使用 F10 退出)但窗口不存在,只是光标闪烁。

parted 立即退出

试过popen3,但我也没有运气

【问题讨论】:

    标签: ruby bash shell curses


    【解决方案1】:

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

    • exec ruby​​ 命令替换正在运行的进程,因此它不会返回到您的代码。
    • Open3 库用于捕获标准输出和标准错误。

    这不是你要找的吗?

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

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

    【讨论】:

    • 好的,谢谢!我尝试了除了系统之外的所有方法,但都没有成功,所以现在我知道了问题所在。
    猜你喜欢
    • 1970-01-01
    • 2017-09-19
    • 2014-03-16
    • 1970-01-01
    • 2020-10-14
    • 2023-03-09
    • 2012-11-23
    • 1970-01-01
    • 2020-08-31
    相关资源
    最近更新 更多