【问题标题】:How to make the output of program running in one terminal be the input of another terminal?如何使在一个终端中运行的程序的输出成为另一个终端的输入?
【发布时间】:2019-02-24 05:35:03
【问题描述】:

注意:这个问题是基于 GUI 程序的,所以普通管道不起作用,我需要让两个程序都运行。

准备工作:在Redhat或Ubuntu中,打开两个gnome-terminal,终端A正在运行一个脚本程序,可以生成一些字符串输出;终端 B 正在运行另一个程序,该程序正在等待用户输入。

目标:使终端A/程序的输出自动成为终端B的输入。

主要的挑战点是,在终端B中运行的程序超出了我的控制范围,它只能通过键盘接受某种特定的用户输入,我在运行时不能输入任何其他管道命令。此外,程序 B 需要一些时间来处理从程序 A 传递的命令,所以如果我有多个命令,我需要让两个程序都运行,但不像普通管道:A 生成一系列命令并自行终止,所有命令都会同时传递给B,B得到输入和响应。如果所有命令同时到来,B 只能响应第一个命令而忽略其余命令。

到目前为止,我必须将第一个程序输出复制并粘贴到终端B,有没有聪明的方法可以链接两个终端并自动进行此操作?

【问题讨论】:

标签: python linux user-interface io pipe


【解决方案1】:

在一种方式中,我建议更改连接这些终端的方式。

或者,您可以尝试/dev/tty 文件。

/dev/tty 是一个特殊的文件,代表当前的终端 过程。因此,当您回显 1 > /dev/tty 时,您的消息 ('1') 将 出现在您的屏幕上。同样,当您 cat /dev/tty 时,您的 后续输入会重复(直到您按下 Ctrl-C)。

/dev/tty 本身并不“包含”任何内容,但您可以从中读取 并写信给它(为了它的价值)。我想不出一个好的用途 它,但是有类似的文件对简单的 IO 非常有用 操作(例如 /dev/ttyS0 通常是你的串口)

它确实让你的命令传递到终端,但我不确定你是否可以用这种方式执行它们。

【讨论】:

    猜你喜欢
    • 2014-04-07
    • 1970-01-01
    • 1970-01-01
    • 2022-11-26
    • 1970-01-01
    • 2014-02-09
    • 1970-01-01
    • 1970-01-01
    • 2019-10-03
    相关资源
    最近更新 更多