Это невозможно сделать в консоли, поскольку перенаправление потока всегда образует ациклический граф.
Чтобы получить циклическое перенаправление, которое вы ищете, вы можете написать небольшую программу, которая вызывает оба ваших исполняемых файла и управляет связью входных и выходных потоков каждого процесса. Каждая пара подключенных потоков (входной поток и выходной поток из каждой программы) будет нуждаться в потоке для извлечения данных из выходного потока и передачи их во входной поток. Таким образом, вам понадобится 2 потока, так как есть 2 набора пар потоков ввода / вывода.
Вот шаги для соединения различных потоков:
- создать два буфера, B1 и B2.
- запустить программу 1, (P1) и получить дескрипторы потока ввода и вывода.
- подключите вход P1 к входной стороне буфера B1, а выход P1 - к выходной стороне буфера B2.
- запустить программу 2 (P2) и получить дескрипторы потока ввода и вывода
- подключите вход P2 к входной стороне буфера B2, а выход P2 - к выходной стороне буфера B1. (обратите внимание, что это B1 / B2 обратное соединение P1 выше.)
Буферы являются активными потоками, считывающими со стороны ввода и записывающими со стороны вывода.
Буфер должен будет определить конец потока на входной стороне и соответственно закрыть выходную сторону. Когда обе стороны закрыты, поток, работающий с буфером, может выйти.