Функция fcntl(2)

Функция fcntl(2)

После открытия файла и получения ссылки на него в виде файлового дескриптора процесс может производить различные файловые операции. Функция fcntl(2) позволяет процессу выполнить ряд действий с файлом, используя его дескриптор, передаваемый в качестве первого аргумента:

#include <fcntl.h>

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

Функция fcntl(2) выполняет действие cmd с файлом, а возможный третий аргумент зависит от конкретного действия:

F_DUPFD Разместить новый файловый дескриптор, значение которого больше или равно значению третьего аргумента. Новый файловый дескриптор будет указывать на тот же открытый файл, что и fildes. Действие аналогично вызову функции dup(2) или dup2(2): fddup = fcntl(fd, F_DUPFD, fildes2)
F_GETFD Возвратить признак сохранения дескриптора при запуске новой программы (выполнении системного вызова exec(2)) — флаг close-on-exec (FD_CLOEXEC). Если флаг установлен, то при вызове exec(2) файл, ассоциированный с данным дескриптором, будет закрыт
F_SETFD Установить флаг close-on-exec согласно значению, заданному третьим аргументом
F_GETFL Возвратить режим доступа к файлу, ассоциированному с данным дескриптором. Флаги, установленные в возвращаемом значении, полностью соответствуют режимам открытия файла, задаваемым функции open(2). Их значения приведены в табл. 2.8. Рассмотрим пример: oflags = fcntl(fd, F_GETFL, 0); /* Выделим биты, определяющие режим доступа */ accbits = oflags & O_ACCMODE; if (accbits == O_RDONLY) printf("Файл открыт только для чтения "); else if (accbits == O_WRONLY) printf("Файл открыт только для записи "); else if (accbits == O_RDWR) printf("Файл открыт для чтения и записи ");
F_SETFL Установить режим доступа к файлу согласно значению, переданному в третьем аргументе. Могут быть изменены только флаги O_APPEND, O_NONBLOCK, O_SYNC и O_ASYNC.
F_GETLK Проверить существование б
Поделитесь на страничке

Следующая глава >

Похожие главы из других книг

Функция SUM

Из книги Обработка баз данных на Visual Basic®.NET автора Мак-Манус Джеффри П

Функция SUM Ваши возможности в подведении итогов не ограничены простым подсчетом записей. Используя функцию SUM, можно генерировать итоговые результаты для всех возвращаемых записей по любым числовым полям. Например, для создания запроса, который генерирует итоги по


20.3.7. Вызовы ioctl(2) и fcntl(2) являются препятствиями

Из книги Искусство программирования для Unix автора Реймонд Эрик Стивен

20.3.7. Вызовы ioctl(2) и fcntl(2) являются препятствиями Механизмы ioctl(2) и fcntl(2) обеспечивают способ написания перехватчиков (hooks) в драйверах устройств. Первоначальным историческим использованием ioctl(2) была установка параметров, таких как скорость передачи и количество


Функция uni()

Из книги Fiction Book Designer Краткое руководство автора Автор неизвестен

Функция uni() Поиск/замена символа по его юникодному номеру также может быть сделана при помощи функции uni().Пример функции uni(): Boouni(107,32)Designer найдет слово Book


Функция uni()

Из книги Fiction Book Designer 3.2. Краткое руководство автора Izekbis

Функция uni() Поиск/замена символа по его юникодному номеру также может быть сделана при помощи функции uni().Пример функции uni(): Boouni(107,32)Designer найдет слово Book


20.3.7. Вызовы ioctl(2) и fcntl(2) являются препятствиями

Из книги Искусство программирования для Unix автора Реймонд Эрик Стивен

20.3.7. Вызовы ioctl(2) и fcntl(2) являются препятствиями Механизмы ioctl(2) и fcntl(2) обеспечивают способ написания перехватчиков (hooks) в драйверах устройств. Первоначальным историческим использованием ioctl(2) была установка параметров, таких как скорость передачи и количество


9.3. Блокирование записей с помощью fcntl по стандарту Posix

Из книги UNIX: взаимодействие процессов автора Стивенс Уильям Ричард

9.3. Блокирование записей с помощью fcntl по стандарту Posix Согласно стандарту Posix, интерфейсом для блокировки записей является функция fcntl:#include <fcntl.h>int fcntl(int fd, int cmd,… /* struct flock *arg */);/* Возвращает –1 в случае ошибки: результат, возвращаемый в случае успешного завершения,


Блокировка записей fcntl

Из книги Технология XSLT автора Валиков Алексей Николаевич

Блокировка записей fcntl Последняя пpoгрaммa использует fcntl для синхронизации. Функция main приведена в листинге А.30. Эта программа будет выполняться успешно только в том случае, если количество потоков равно 1, поскольку блокировка fcntl предназначена для использования между


Функция not

Из книги Linux программирование в примерах автора Роббинс Арнольд


Функция sum

Из книги Программирование для Linux. Профессиональный подход автора Митчелл Марк


Функция contains

Из книги UNIX: разработка сетевых приложений автора Стивенс Уильям Ричард


9.4.3. Управление атрибутами файла: fcntl()

Из книги автора

9.4.3. Управление атрибутами файла: fcntl() Системный вызов fcntl() («управление файлом») предоставляет контроль над различными атрибутами либо самого дескриптора файла, либо лежащего в его основе открытого файла. Справочная страница GNU/Linux fcntl(2) описывает это таким способом:#include


9.4.3.5. Сводка fcntl()

Из книги автора

9.4.3.5. Сводка fcntl() Сводка для системного вызова fcntl() приведена в табл. 9.5.Таблица 9.5. Сводка fcntl() Значение cmd Значение arg Возвращает F_DUPFD Наименьший новый дескриптор Дублирует аргумент fd F_GETFD Получает флаги дескриптора файла (close-on-exec) F_SETFD Новое значение


14.2.2. Блокировка POSIX: fcntl() и lockf()

Из книги автора

14.2.2. Блокировка POSIX: fcntl() и lockf() Системный вызов fcntl() (file control — управление файлом) используется для блокировки файла. (Другое использование fcntl() было описано в разделе 9.4.3 «Управление атрибутами файла: fcntl()».) Он объявлен следующим образом:#include <unistd.h> /* POSIX */#include <fcntl.h>int


8.3. Функция fcntl(): блокировки и другие операции над файлами

Из книги автора

8.3. Функция fcntl(): блокировки и другие операции над файлами Функция fcntl() — это точка доступа к нескольким особым операциям над файлами. Первым аргументом функции является дескриптор файла, вторым указывается код операции. Для некоторых операций требуется также


7.11. Функция fcntl

Из книги автора

7.11. Функция fcntl Сокращение fcntl означает «управление файлами» (file control). Эта функция выполняет различные операции управления дескрипторами. Перед описанием этой функции и ее влияния на сокет нам нужно составить некоторое более общее представление о ее возможностях. В табл.