Я хотел бы, чтобы выход A был входом для B, и в то же время выход B был входом для A, возможно ли это?
Я не понимаю, как это могло бы сработать.
Если оба процесса зависят друг от друга для генерирования вывода, процесс B будет ждать, пока процесс A не выдаст какой-либо вывод, но процесс A не будет генерировать какой-либо вывод, пока не получит ввод от процесса B.
Оба процесса будут блокироваться навсегда.
РЕДАКТИРОВАТЬ:
ОП прокомментировал ниже другой случай, когда процесс A генерирует некоторый вывод и затем ожидает ввода для процесса B, в то время как процесс B просто ожидает процесса A.
В этом случае мы можем заставить работать "взаимный трубопровод". Создайте два скрипта:
/tmp/multualpipingA
(этот скрипт генерирует некоторый вывод с echo process A
и ожидает):
#!/bin/bash
echo process A
while read; do
echo process A says: \"$REPLY\"
sleep 1
done < /dev/stdin
и /tmp/multualpipingB
(этот скрипт реагирует только на ввод):
#!/bin/bash
while read; do
echo process B says: \"$REPLY\"
sleep 1
done < /dev/stdin
Теперь откройте две терминальные сессии, "1" и "2", и введите в следующем порядке:
session1$ mkfifo /tmp/fifo{A,B}
session1$ cat /tmp/fifoB | /tmp/multualpipingB | tee /tmp/fifoA
Enter
session2$ cat /tmp/fifoA | /tmp/multualpipingA | tee /tmp/fifoB
Enter
Вы увидите этот вывод:
process A
process A says: "process B says: "process A""
process A says: "process B says: "process A says: "process B says: "process A""""
и это:
process B says: "process A"
process B says: "process A says: "process B says: "process A"""
process B says: "process A says: "process B says: "process A says: "process B says: "process A"""""
(протестировано на OS X 10.8.2 "Montain Lion")