declare -a FDS
coproc FDS { process_A; }
process_B <&${FDS[0]} >&${FDS[1]}
Run Code Online (Sandbox Code Playgroud)
小智 2
看一下命名管道。创建一个从 A 到 B 的管道,以及一个从 B 到 A 的管道。然后启动 A,将其标准输出重定向到第一个管道,将其标准输入重定向到第二个管道。然后从相反的方向开始B。
它看起来像这样:
mkfifo --mode=0666 /tmp/AtoB
mkfifo --mode=0666 /tmp/BtoA
A < BtoA > AtoB
B < AtoB > BtoA
Run Code Online (Sandbox Code Playgroud)
补充:当然,他们需要某种方式来识别双方都在场。就像简单的“我在这里,你在吗?” 两者都会收到响应。
重要提示:如下面的评论所述,此过程将因两个程序都阻塞读取而死锁。需要某种形式的协调来确保这种情况不会发生。