Функция mkfifo создает особый FIFO-файл с названием pathname.
mode определяет уровни доступа для FIFO.
Они меняются с помощью процесса umask обычным путем:
уровни доступа для созданного файла есть (mode & ~umask).
Особый FIFO-файл похож на обычный канал, только он создается другим путем.
Вместо того, чтобы быть анонимным каналом связи, особый FIFO-файл
подключается к системе с помощью вызова mkfifo.
Как только таким образом создан особый FIFO-файл, любой процесс
может окрыть его для чтения или записи так же, как и любой обычный файл.
Тем не менее, он должен быть открытым в обоих состояниях одновременно,
прежде чем Вы захотите провести в нем операции ввода или вывода.
Однако, открытие FIFO для чтения обычно блокирует его до тех пор, пока
другой процесс не откроет этот же FIFO для записи, и наоборот. Смотрите
fifo(4)
для работы с особым файлом FIFO без его блокирования.
ВОЗВРАЩАЕМЫЕ ЗНАЧЕНИЯ
Обычно возвращаемое значение при успешном завершении работы mkfifo
равно 0. В случае ошибки возвращается -1, при этом значение
переменной errno изменяется соответственно ошибке.
НАЙДЕННЫЕ ОШИБКИ
EACCES
(один из каталогов в pathname не разрешает доступ на поиск или выполнение);
EEXIST
(pathname уже существует);
ENAMETOOLONG
(либо общая длина pathname больше, чем PATH_MAX,
либо компонент "имя файла" имеет большую по сравнению с NAME_MAX длину.
В системе GNU не существует предела общей длины имени файла,
но некоторые файловые системы могут установить пределы длины данных компонентов.);
ENOENT
(компонента каталога pathname не существует или он является
"разорванной" символьной ссылкой);
ENOSPC
(в каталоге или файловой системе недостаточно места для нового файла);
ENOTDIR
(компонент, указанный как каталог в pathname, фактически не
является каталогом);
EROFS
(pathname обращается к файловой системе, доступной только для чтения).