mkfifo вызывает зависание терминала?

mkfifo просто не работает с Cygwin? Простой набор команд, например

$ mkfifo my_pipe

$ echo "1234" > my_pipe

просто заставляет терминал сидеть вечно с мигающим курсором. Я "делаю это неправильно"?


person Steven Penny    schedule 01.10.2012    source источник


Ответы (2)


Нет, вы не делаете ничего плохого с любой из этих команд, просто ваши ожидания немного не соответствуют действительности.

Что вы упускаете, так это что-то на другом конце этого канала, считывающее эти данные. Это очевидное зависание происходит и в Linux, так что это не проблема CygWin (или вообще какая-то проблема).

Просто откройте другое окно и введите:

cat <my_pipe

и вы увидите, как появятся данные, а затем завершится исходное echo.

person paxdiablo    schedule 01.10.2012

Суть именованных каналов в том, что вам нужно иметь что-то на обоих концах. Вы не можете писать в канал, если он еще не завершен, поэтому команда echo зависает до тех пор, пока что-то еще не попытается прочитать из этого канала, чего в вашем случае никогда не происходит.

person Dan    schedule 01.10.2012