FCNTL(5)
НАЗВАНИЕ
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 /* Блокировка на удаление */
СМ. ТАКЖЕ
fcntl(2), open(2).