mkfifo()

Создать особый FIFO-файл

Прототип:

#include <sys/types.h>
#include <sys/stat.h>
int mkfifo( const char *path,
mode_t mode );

Аргументы:

path
Путь, который необходимо использовать для файла FIFO.
mode
Биты прав доступа для нового файла FIFO. Для получения дополнительной информации см. Права доступа.

Библиотека:

libc

Описание:

Функция mkfifo() создаёт новый файл FIFO с именем, которое задаётся параметром path. Биты прав доступа к создаваемому файлу FIFO задаются в параметре mode и модифицируются маской создания процесса (см. umask()). Биты, установленные в параметре mode, кроме битов прав доступа к файлу, игнорируются.

Идентификатор владельца FIFO устанавливается равным эффективному идентификатору пользователя процесса, а идентификатор группы FIFO устанавливается равным эффективному идентификатору группы процесса.

Если mkfifo() завершается успешно, поля st_ftime, st_ctime, st_atime и st_mtime файла помечаются для обновления. Кроме того, поля st_ctime и st_mtime каталога, содержащего новую запись, также помечаются для обновления.

Возвращаемое значение:

0
Успешное завершение.
-1
Возникла ошибка. Код ошибки записан в errno.

Коды ошибок:

EACCES
Для компонента префикса имени, заданного параметром path, запрещён поиск.
EEXIST
Указанный файл уже существует.
ENAMETOOLONG
Длина строки path превышает значение PATH_MAX или длина компонента имени пути больше, чем значение NAME_MAX.
ENOENT
Компонент префикса пути, заданного параметром path, не существует или параметр path указывает на пустую строку.
ENOSPC
Каталог, который будет содержать новый файл, не может быть расширен или в файловой системе нет ресурсов для размещения файлов (то есть диск заполнен).
ENOSYS
Эта функция не поддерживается для пути, заданного параметром path.
ENOTDIR
Компонент префикса пути, заданного параметром path, не является каталогом.
EROFS
Заданный файл находится в файловой системе, доступной только для чтения.

Примеры:

#include <sys/types.h>
#include <sys/stat.h>
#include <stdlib.h>
int main( void )
{
(void)mkfifo( "hd/kpda", S_IRUSR | S_IWUSR );
return (EXIT_SUCCESS);
}

Классификация:

POSIX 1003.1

Безопасность использования
Точка остановки потока
Нет
Обработчик прерываний
Нет
Обработчик сигналов
Да
В потоке
Да

Тематические ссылки:

struct stat, chmod(), errno, mknod(), pipe(), stat(), umask()




Предыдущий раздел: Описание API системной библиотеки