我有两个程序(p1和p2),我需要将p1输出连接到p2输入,并将p2输出连接到p1输入。有办法做到这一点吗?
“为什么”是因为我有两个要玩游戏的程序,所以第一个程序将执行一个动作并等待接收另一个程序的动作,依此类推。当第一个程序以信号 0 或 1 退出时,执行结束。程序 p1 将始终相同,但 p2 将在每次迭代中发生变化。
我需要在 Linux 终端中执行此操作,因为程序 p1 和 p2 可以(并且可能会)以不同的语言执行,例如 p1 将是 c++ 可执行文件,p2 将是 python 脚本。
有多种使用 fifo 的选项。
使用一个先进先出:
mkfifo fifo
tail -f fifo | p1 | p2 > fifo &
有两个 fifo:
mkfifo fifo1
mkfifo fifo2
tail -f fifo1 | p1 > fifo2 &
tail -f fifo2 | p2 > fifo1 &
使用 2 个 fifo 的一个原因可能是,可以在流中为 p1 和 p2 添加一些内容。