Рассмотрим следующий сценарий:
создается FIFO с именем test
. В одном окне терминала (A) я запускаю cat <test
и в другом (B) cat >test
. Теперь можно написать в окне B и получить вывод в окне A. Также можно завершить процесс A и перезапустить его и по-прежнему использовать эту настройку, как предполагалось. Однако, если вы завершаете процесс в окне B, B (насколько мне известно) отправляет EOF через FIFO для обработки A и завершает его также.
Фактически, если вы запустите процесс, который не завершится в EOF, вы все равно не сможете использовать свой FIFO, который вы перенаправили на этот процесс. Я думаю, это потому, что этот FIFO считается закрытым.
Есть ли способ обойти эту проблему?
Причина того, почему я столкнулся с этой проблемой, заключается в том, что я хочу отправлять команды на мой сервер minecraft, работающий на сеансе экрана. Например: echo "command" >FIFO_to_server
. Это, вероятно, можно сделать, используя экран сам по себе, но мне не очень нравится экран. Думаю, решение, использующее только трубы, было бы более простым и чистым.