Запретить закрытие FIFO / повторное использование закрытого FIFO

Рассмотрим следующий сценарий:

создается FIFO с именем test . В одном окне терминала (A) я запускаю cat , а в другом (B) cat> test . Теперь можно писать в окне B и получать результат в окне A. Также возможно завершить процесс A и перезапустить его, сохранив при этом возможность использовать эту настройку, как предполагалось. Однако, если вы завершите процесс в окне B, B (насколько мне известно) отправит EOF через FIFO для процесса A и завершит его.

Фактически, если вы запустите процесс, который не завершится на EOF, вы все равно не сможете использовать свой FIFO, который вы перенаправили в процесс. Я думаю, это связано с тем, что этот FIFO считается закрытым.

Можно ли как-нибудь обойти эту проблему?

Причина, по которой я столкнулся с этой проблемой, заключается в том, что я хотел бы отправлять команды на свой сервер minecraft, работающий в сеанс экрана. Например: echo "команда"> FIFO_to_server . Вероятно, это можно сделать, используя сам экран, но я м не очень удобно работать с экраном. Я думаю, что решение, использующее только трубы, было бы более простым и чистым.

17
задан Shump 10 May 2011 в 22:50
поделиться