【发布时间】:2019-05-26 01:55:45
【问题描述】:
现在我有程序 A 和 B。我想使用 bash 将 A 的标准输出重定向到 B 的标准输入,并将 B 的标准输出重定向到 A 的标准输入。
我看到有人在做this,但他们没有解释他们是如何做到的。
有什么建议吗?
更新:我找到了一个可以完成这个任务的脚本,但我不明白为什么:
{ ./A < /dev/fd/3 | ./B 3>&-; } 3>&1 | :
【问题讨论】:
-
您的问题被标记为
[bash],但您参考了[c++]文章(仍然没有完成您描述的内容)。您可以在 C/C++ 程序中拥有单独的 进程 或单独的 线程,它们可以作为读取器和写入器,但不能在单个 bash 管道中同时执行这两种操作. (复合命令)。使用两个 shell(单独的脚本),您可以重定向文件描述符以允许从两个不同的源读取,但除非使用临时文件(或某些递归调用设置),否则该过程是一种方式。 -
我认为在 shell 脚本中是不可能的。
-
我猜你的意思不仅仅是
A | B | A对吧?但是,如果进入 A 的输入导致进入 B 的输出,然后导致输出进入 A...ad infinitum,那么终止条件是什么,您的最终输出结果是什么预计?如果 B 的输出进入 A 的相同 I 姿态的输入,那么 A 正在读取两个输入流,等等 -
您应该能够使用命名管道来执行此操作;示例见this answer。
标签: bash io-redirection