НАЗВАНИЕ
fcntl - флаги управления файлами
СИНТАКСИС
#include <fcntl.h>
ОПИСАНИЕ
Системный вызов fcntl(2) предназначен для управления
открытыми файлами. Во включаемом файле <fcntl.h> описаны запросы и аргументы для системных вызовов fcntl(2) и
open(2).
Флаги, доступные open(2) и fcntl(2)
/* Первые три флага могут быть установлены только при открытии файла */ #define O_RDONLY 0 #define O_WRONLY 1 #define O_RDWR 2 #define O_NDELAY 04 /* Неблокируемый ввод/вывод */ #define O_APPEND 010 /* Добавлять (гарантируется, что запись будет производиться в конец файла) */ #define O_SYNC 020 /* Флаг синхронной записи */
Флаги, доступные только open(2)
#define O_CREAT 00400 /* Создать и открыть файл, ис- пользуя третий агрумент open(2), как режим доступа */ #define O_TRUNC 01000 /* Открыть с опустошением */ #define O_EXCL 02000 /* Флаг исключительности */
Запросы к fcntl(2)
#define F_DUPFD 0 /* Скопировать дескриптор файла */ #define F_GETFD 1 /* Получить флаги файла с данным дескриптором */ #define F_SETFD 2 /* Установить флаги файла с данным дескриптором */ #define F_GETFL 3 /* Получить флаги файла */ #define F_SETFL 4 /* Установить флаги файла */ #define F_GETLK 5 /* Получить состояние блокировки файла */ #define F_SETLK 6 /* Установить блокировку файла */ #define F_SETLKW 7 /* Установить блокировку файла и ждать */ #define F_CHKFL 8 /* Проверить допустимость измене- ний флагов файла */ #define F_ALLOCSP 10 /* Зарезервирован */ #define F_FREESP 11 /* Зарезервирован */
Структура контроля за блокировкой сегмента файла, информация передается пользователем системе
struct flock { short l_type; short l_whence; long l_start; long l_len; /* Если 0, то до конца файла */ short l_sysid; /* Возвращается по запросу F_GETLK */ short l_pid; /* Возвращается по запросу F_GETLK */ };Типы блокировок сегмента файла
#define F_RDLCK 01 /* Блокировка на чтение */ #define F_WRLCK 02 /* Блокировка на запись */ #define F_UNLCK 03 /* Блокировка на удаление */