Рассмотрим следующий сценарий:
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
. Вероятно, это возможно сделать, используя сам экран, но мне не очень удобно с экраном. Я думаю, что решение, использующее только трубы, было бы проще и чище.