fcntl - управление файлами
#include <fcntl.h>
int fcntl (fildes, cmd, arg) int fildes, cmd, arg;
Системный вызов fcntl выполняет управляющие операции над открытыми файлами. Аргумент fildes - это дескриптор открытого файла, полученный после выполнения системных вызовов creat, open, dup, fcntl и pipe.
Аргумент cmd может принимать следующие значения, определяющие выполняемую операцию:
F_DUPFD Создать новый дескриптор файла с такими свойствами:
F_GETFD Получить значение флага "закрыть при выполнении вызова exec" для дескриптора файла fildes. Если младший бит возвращаемого значения равен нулю, то файл останется открытым, в противном случае при выполнении вызова exec файл будет закрыт. F_SETFD Установить значение флага "закрыть при выполнении вызова exec" для дескриптора файла fildes равным значению младшего бита (0 или 1) аргумента arg. F_GETFL Получить флаги статуса файла, ассоциированного с дескриптором fildes. F_SETFL Установить флаги статуса файла, ассоциированного с дексриптором fildes, равными значению аргумента arg. Могут быть установлены только некоторые флаги [см. ]. F_GETLK Получить характеристики первой блокировки, мешающей установить новую блокировку, задаваемую структурой типа flock с адресом arg. Результирующая информация возвращается в той же структуре. Если нет помех для создания нужной блокировки, то структура flock не изменяется за исключением поля типа блокировки, которому присваивается значение F_UNLCK. F_SETLK Установить или снять блокировку сегмента файла в соответствии со значением структуры типа flock, на которую указывает аргумент arg. [см. ]. Операция F_SETLK используется для установки блокировки на чтение (F_RDLCK) или запись (F_WRLCK), а также для снятия блокировки обоих типов (F_UNLCK). Если блокировка на чтение или запись не может быть установлена, то системный вызов fcntl завершается немедленно и возвращает -1. F_SETLKW Эта операция отличается от операции F_SETLK только тем, что при неудачной попытке установить блокировку на чтение или запись процесс переходит в состояние ожидания до тех пор, пока нужный сегмент файла не будет разблокирован.