Ядро поддерживает один канал для каждого спецфайла FIFO, который открыт хотя бы одним процессом. Для того, чтобы пропускать данные FIFO должен быть открыт как для чтения, так и для записи. Обычно при открытии FIFO он блокируется до тех пор, пока вышеописанные условия не будут выполнены.
Процесс может открыть FIFO в неблокирующем режиме. В этом случае спецфайл открывается только для чтения, даже если никто не открывал его для записи; если это произойдет, то вернется сообщение об ошибке ENXIO (такого устройства или адреса не существует), хотя файл открыт для чтения.
В Linux открытие FIFO для чтения и записи может быть осуществлено в блокирующем и неблокирующем режимах. Так как POSIX не описывает эти положения, это может быть использовано для открытия FIFO для чтения в отсутствие считывающих процессов. Процесс, использующий этот файл для чтения и записи (для связи с самим собой), не должен допустить возникновения безвыходных ситуаций.
Закладки на сайте Проследить за страницей |
Created 1996-2024 by Maxim Chirkov Добавить, Поддержать, Вебмастеру |