Bash 如何重定向A';s标准输出到B';s stdin和B';s标准输出到A';什么是stdin?

Bash 如何重定向A';s标准输出到B';s stdin和B';s标准输出到A';什么是stdin?,bash,io-redirection,Bash,Io Redirection,现在我有了程序A和B。我想使用bash将A的stdout重定向到B的stdin,并将B的stdout重定向到A的stdin 我看到有人在做,但他们没有解释他们是怎么做的 有什么建议吗 Upd:我发现一个脚本可以完成这个任务,但我不明白为什么: {./A&-}3>&1| 您可以使用socat实用程序。它会将任何内容连接到任何其他内容,包括两个相互连接的进程: socat exec:'A' exec:'B' 您的问题被标记为[bash],但您引用的是一篇[c++]文章(这篇文章仍然没有完成您所描

现在我有了程序A和B。我想使用bash将A的stdout重定向到B的stdin,并将B的stdout重定向到A的stdin

我看到有人在做,但他们没有解释他们是怎么做的

有什么建议吗


Upd:我发现一个脚本可以完成这个任务,但我不明白为什么:

{./A&-}3>&1|

您可以使用
socat
实用程序。它会将任何内容连接到任何其他内容,包括两个相互连接的进程:

socat exec:'A' exec:'B'

您的问题被标记为
[bash]
,但您引用的是一篇
[c++]
文章(这篇文章仍然没有完成您所描述的内容)。在一个C/C++程序中,可以有单独的进程或单独的线程,既可以作为读写器,也可以作为写器,但不能在一个bash管道中同时执行这两个任务。(复合命令)。使用两个shell(单独的脚本),您可以重定向文件描述符以允许从两个不同的源读取,但除非使用临时文件(或一些递归调用设置),否则该过程是一种方法。我认为在shell脚本中不可能这样做。我想您不是简单地指
a | B | a
对吗?但若进入A的输入导致进入B的输出,这将导致进入A的输出。。。无限远,那么终止条件是什么,您期望的最终输出结果是什么?如果B的输出进入A的相同I状态的输入,那么A正在读取两个输入流,等等,你应该能够用一个命名的管道来实现这一点;有关示例,请参见。