如何使在一个终端中运行的程序的输出成为另一终端的输入?

时间:2018-09-20 01:09:55

标签: python linux user-interface io pipe

注意:问题是基于GUI程序的,所以普通管道无法工作,我需要保持两个程序都运行。

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

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

主要的挑战是,在终端B中运行的程序是我无法控制的,它只能通过键盘接受某种特定的用户输入,运行时我不能键入任何其他管道命令。另外,程序B需要一些时间来处理从程序A传递来的命令,因此,如果我有多个命令,则需要使两个程序都保持运行状态,但与普通管道不同:A生成一系列命令并终止自身,所有命令都将同时传递给B,B得到输入和响应。如果所有命令都同时出现,则B只能对第一个命令做出响应,而忽略其余命令。

到目前为止,我必须复制第一个程序输出并将其粘贴到端子B中,是否有任何聪明的方法来链接两个端子并自动执行此操作?

problem diagram

1 个答案:

答案 0 :(得分:0)

以一种方式,我建议更改连接这些端子的方式。

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

  

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

     

/ dev / tty并不“包含”任何东西,但是您可以从中读取   并写(价值)。我想不出一个好用   它,但是有类似的文件对于简单的IO非常有用   操作(例如/ dev / ttyS0通常是您的串行端口)

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