Я пытаюсь написать именованный канал, сделанный с помощью mkfifo. Но когда я запускаю команду, (ex) ls > myNamedPipe
, я больше не могу вводить команды в bash. Я все еще могу писать персонажей, и это в значительной степени.
Не удается записать в именованный канал
Ответ 1
Именованный канал остается открытым, пока вы не прочтете его из другого места. Это должно обеспечить связь между различными процессами.
Try:
mkfifo fifo
echo "foo" > fifo
Затем откройте другой терминал и введите:
cat fifo
Если вы вернетесь к первому терминалу, вы заметите, что теперь можете вводить другие команды.
Смотрите также, что происходит с обратным:
# terminal 1
cat fifo
# terminal 2
echo "foo" > fifo
# and now you can see "foo" on terminal 1
Если вы хотите, чтобы терминал не "зависал" при попытке записать что-то в fifo, прикрепите к файлу дескриптор fifo:
mkfifo fifo
exec 3<> fifo
echo "foo" > fifo
echo "bar" > fifo