lockf - проверяет, устанавливает POSIX-блокировку на открытом файле или снимает ее с файла
НАЗВАНИЕlockf - проверяет, устанавливает POSIX-блокировку на
открытом файле или снимает ее с файла
СИНТАКСИС
#include
int lockf(int fd, int cmd, off_t len);
ОПИСАНИЕ
Устанавливает POSIX-блокировку на открытом файле,
проверяет ее наличие или снимает ее с файла. Файл
определяется параметром fd. Данная функция - всего лишь
более удобный способ вызова fcntl(2). Список существующих
операций приведен ниже:
F_LOCK (устанавливает блокировку на файле.
Только один процесс может блокировать
данный файл в текущий момент времени.
Если файл уже блокирован, то он будет
блокирован позже, когда будет снята
предыдущая блокировка.);
F_TLOCK (то же самое, что и F_LOCK, но не
блокирует файл, а возвращает сообщение об
ошибке, если файл уже заблокирован в
данный момент);
F_ULOCK (снимает блокировку с файла);
F_TEST (проверяет наличие блокировки: возвращает
0, если fd не блокирован или заблокирован
данным (текущим) процессом; возвращается
-1; значение errno меняется на EACCES,
если файл занят другим процессом);
ВОЗВРАЩАЕМОЕ ЗНАЧЕНИЕ
При нормальном завершении работы возвращается ноль. При
ошибках возвращается -1 и переменная errno изменяется
соответственно ошибке.
КОДЫ ОШИБОК
EAGAIN (файл блокирован и установлен флаг LOCK_NB , или
операция запрещается, поскольку файл отражен в
память другим процессом);
EBADF (fd не является описателем открытого файла);
EDEADLK
(выполнение операции блокирования должно привести к
зависанию программы);
EINVAL (в fd была указана неправильная операция);
ENOLCK (открыто слишком много сегментов для блокировки,
таблица блокировок переполнена).
СООТВЕТСТВИЕ СТАНДАРТАМ
SYSV