Scroll to navigation

fifo(7) Miscellaneous Information Manual fifo(7)

НАИМЕНОВАНИЕ

fifo - специальный файл, организующий очередь (first-in first-out), именованный канал

ОПИСАНИЕ

Специальный файл FIFO (именованный канал) подобен каналу, за исключением того, что доступен как часть файловой системы. Его можно открывать из нескольких процессов на чтении или запись. Когда процессы обмениваются данными через FIFO, ядро передаёт все данные без их записи в файловую систему. То есть, специальный файл FIFO не хранит содержимое в файловой системе; запись в файловой системе служит просто местом, посредством которого процессы могут получить доступ к каналу, используя имя в файловой системе.

Ядро поддерживает один объект канала для каждого специального файла FIFO, который открыт хотя бы одним процессом. Для того, чтобы пропускать данные, FIFO должен быть открыт как для чтения, так и для записи. Обычно, при открытии FIFO он блокируется до тех пор, пока вышеописанные условия не будут выполнены.

A process can open a FIFO in nonblocking mode. In this case, opening for read-only succeeds even if no one has opened on the write side yet and opening for write-only fails with ENXIO (no such device or address) unless the other end has already been opened.

В Linux открытие FIFO для чтения и записи может быть осуществлено в блокирующем и неблокирующем режимах. Так как POSIX не описывает эти положения, это может быть использовано для открытия FIFO для чтения в отсутствие считывающих процессов. Процесс, использующий этот файл для чтения и записи (для связи с самим собой), не должен допустить возникновения блокировок (deadlocks).

ПРИМЕЧАНИЯ

Подробную информацию о семантике ввода-вывода FIFO смотрите в pipe(7).

Если процесс попытается записать данные в FIFO, который не открыт для чтения, то ему посылается сигнал SIGPIPE.

Специальные файлы FIFO могут быть созданы с помощью mkfifo(3), и они обозначаются в ls -l типом файла 'p'.

СМОТРИТЕ ТАКЖЕ

mkfifo(1), open(2), pipe(2), sigaction(2), signal(2), socketpair(2), mkfifo(3), pipe(7)

ПЕРЕВОД

Русский перевод этой страницы руководства разработал(и) Azamat Hackimov <azamat.hackimov@gmail.com>, Dmitry Bolkhovskikh <d20052005@yandex.ru>, Yuri Kozlov <yuray@komyakino.ru> и Иван Павлов <pavia00@gmail.com>

Этот перевод является свободной программной документацией; он распространяется на условиях общедоступной лицензии GNU (GNU General Public License - GPL, https://www.gnu.org/licenses/gpl-3.0.html версии 3 или более поздней) в отношении авторского права, но БЕЗ КАКИХ-ЛИБО ГАРАНТИЙ.

Если вы обнаружите какие-либо ошибки в переводе этой страницы руководства, пожалуйста, сообщите об этом разработчику(ам) по его(их) адресу(ам) электронной почты или по адресу списка рассылки русских переводчиков.

21 сентября 2025 г. Справочные страницы Linux 6.16