Você não especificou o shell, portanto, em geral, os pipes nomeados seriam o caminho mais fácil. No entanto, se o seu shell os suportar, isso pode ser um bom caso de uso para coprocessos.
Como você usa o comando coproc no Bash
In
a | cmd | b
,a
feeds data tocmd
andb
reads its output. Runningcmd
as a co-process allows the shell to be botha
andb
.
No bash:
coproc ./chess_1
./chess_2 < "${COPROC[0]}" > "${COPROC[1]}"
O post vinculado também fala sobre as desvantagens dos coprocessos e tem exemplos de uso de pipes nomeados (via mkfifo
).