Подтвердить что ты не робот

Не удается записать в именованный канал

Я пытаюсь написать именованный канал, сделанный с помощью mkfifo. Но когда я запускаю команду, (ex) ls > myNamedPipe, я больше не могу вводить команды в bash. Я все еще могу писать персонажей, и это в значительной степени.

4b9b3361

Ответ 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