【发布时间】:2019-02-24 05:35:03
【问题描述】:
注意:这个问题是基于 GUI 程序的,所以普通管道不起作用,我需要让两个程序都运行。
准备工作:在Redhat或Ubuntu中,打开两个gnome-terminal,终端A正在运行一个脚本程序,可以生成一些字符串输出;终端 B 正在运行另一个程序,该程序正在等待用户输入。
目标:使终端A/程序的输出自动成为终端B的输入。
主要的挑战点是,在终端B中运行的程序超出了我的控制范围,它只能通过键盘接受某种特定的用户输入,我在运行时不能输入任何其他管道命令。此外,程序 B 需要一些时间来处理从程序 A 传递的命令,所以如果我有多个命令,我需要让两个程序都运行,但不像普通管道:A 生成一系列命令并自行终止,所有命令都会同时传递给B,B得到输入和响应。如果所有命令同时到来,B 只能响应第一个命令而忽略其余命令。
到目前为止,我必须将第一个程序输出复制并粘贴到终端B,有没有聪明的方法可以链接两个终端并自动进行此操作?
【问题讨论】:
-
将P1的输出写入文件,然后从P2读取文件,可能吗?
-
好吧我考虑过这个方案,但是P2只能接受键盘输入或stdin作为控制器,我不能让它做读取操作......所以我需要做P1的输出每次都刷新到 P2,但不是只在 P1 终止时刷新一次
-
您经常使用 Unix Domain Sockets 来获得 Linux 上最快的 IPC。另见Which Linux IPC technique to use?、Interprocess communication in Python、Interprocess communication via Pipes、Interprocess Communication via file、Interprocess Communication in C++等
-
Interprocess communication in Python 的可能重复项。您经常使用 Unix Domain Sockets 来实现 Linux 上最快的 IPC。另见Which Linux IPC technique to use?、Interprocess communication via Pipes、Interprocess Communication via file、Interprocess Communication in C++等
标签: python linux user-interface io pipe