Книга: Основы программирования в Linux

Другие команды блокировок

Другие команды блокировок

Есть второй метод блокировки файлов — функция lockf. Она тоже действует, используя дескрипторы файлов.

У функции следующий прототип:

#include <unistd.h>
int lockf(int fildes, int function, off_t size_to_lock);

Параметр function может принимать следующие значения:

F_ULOCK — разблокировать;

F_LOCK — заблокировать монопольно;

F_TLOCK — проверить и заблокировать монопольно;

F_TEST — проверить наличие блокировок других процессов.

Параметр size_to_lock содержит количество обрабатываемых байтов, отсчитываемых в файле от текущей величины смещения. У функции lockf более простой интерфейс, чем у вызова fcntl в основном потому, что у нее меньше функциональных возможностей и гибкости. Для применения функции вы должны найти начало участка, который хотите заблокировать, затем вызвать функцию, указав количество блокируемых байтов.

Как и в случае вызова fcntl, все блокировки только рекомендательные; они на самом деле не могут помешать чтению из файла или записи в файл. За проверку имеющихся блокировок отвечают программы. Эффект от смешивания блокировок с помощью fcntl и блокировок с помощью lockf непредсказуем, поэтому вам следует решить, какой способ выбрать, и строго его придерживаться.

Оглавление книги


Генерация: 5.471. Запросов К БД/Cache: 3 / 1
поделиться
Вверх Вниз