MKFIFO(3)

НАЗВАНИЕ
mkfifo - создает особый FIFO-файл (именованный канал)

СИНТАКСИС
#include <sys/types.h>
#include <sys/stat.h>

int mkfifo(const char *pathname, mode_t mode);

ОПИСАНИЕ
Функция 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 обращается к файловой системе, доступной только для чтения).

СООТВЕТСТВИЕ СТАНДАРТАМ
POSIX.1

СМ. ТАКЖЕ
mkfifo(1), read(2), write(2), open(2), close(2), stat(2), umask(2), fifo(4)