mkfifo - создает особый FIFO-файл (именованный канал)
НАЗВАНИЕmkfifo - создает особый FIFO-файл (именованный канал)
СИНТАКСИС
#include
#include
int mkfifo(const char *pathname, mode_t mode);
ОПИСАНИЕ
Функция mkfifo создает особый FIFO-файл с названием path-
name. 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