Unix Man (Справочное руководство)


FCNTL(2)


FCNTL(2)

НАЗВАНИЕ


fcntl - управление файлами

СИНТАКСИС

#include <fcntl.h>

int fcntl (fildes, cmd, arg) int fildes, cmd, arg;

ОПИСАНИЕ


Системный вызов fcntl выполняет управляющие операции над открытыми файлами. Аргумент fildes - это дескриптор открытого файла, полученный после выполнения системных вызовов creat, open, dup, fcntl и pipe.

Аргумент cmd может принимать следующие значения, определяющие выполняемую операцию:

F_DUPFD Создать новый дескриптор файла с такими свойствами:

  1. Его номер - есть минимальный из доступных номеров, не меньших arg.
  2. Он ассоциирован с тем же открытым файлом (или каналом), что и исходный дескриптор fildes.
  3. У него тот же указатель текущей позиции в файле, что и у исходного (то есть они разделяют общий указатель).
  4. Тот же режим доступа к файлу (чтение, запись или чтение/запись).
  5. Те же флаги статуса файла (то есть оба дескриптора разделяют общие флаги статуса).
  6. Ассоциированный с новым дескриптором флаг "закрыть при выполнении вызова exec" устанавливается в состояние "оставить открытым при выполнении вызова exec".

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 только тем, что при неудачной попытке установить блокировку на чтение или запись процесс переходит в состояние ожидания до тех пор, пока нужный сегмент файла не будет разблокирован.




Начало  Назад  Вперед



Книжный магазин