Flock - встановлює або знімає - м’яку - блокування(advisory lock) відкритого файлу -
НАЗВАflock - встановлює або знімає "м'яке" блокування (advisory lock) відкритого файлу
int flock(int fd, intoperation);
ОПИСВстановлює або знімає "м'яке" блокування відкритого файлу. Файл визначається описувачем файлу fd.
Допустимі такі операції:
LOCK_SH (блокування, що розділяється. Кілька процесів одночасно можуть тримати блокування файлу одночасно.);
LOCK_EX (виключне блокування. Тільки один процес у кожен момент часу може тримати виключне блокування файлу.);
LOCK_UN (розблокувати файл);
LOCK_NB (не блокувати файл, коли він вже заблокований; це значення може бути задано за допомогою операції логічної складання або за допомогою інших операцій).
Файл не може мати одночасно розділене та виключне блокування. Блокується файл (тобто inode), а не описувач файлу. Тому dup(2) і fork(2) не створюють кількох копій (instances) блокування.
ПОВЕРНЕНЕ ЗНАЧЕННЯУ разі успішного завершення повертається нульове значення. При помилці повертається -1, а змінна errno набуває відповідного значення.
КОДИ ПОМИЛОКEWOULDBLOCK Файл заблокований, а при виклику функції було встановлено прапор LOCK_NB.
ВІДПОВІДНІСТЬ СТАНДАРТАМ4.4BSD (виклик flock(2) вперше з'явився в 4.2BSD).Приміткиflock(2) не блокує файли, розташовані у файловій системі NFS; Використовуйте для цього fcntl(2). Потрібні свіжіші версії Linux і сервера, що підтримують блокування.
Блокування, що забезпечується системними викликамиflock(2) і fcntl(2) мають різну щодо породжених процесів і виклику dup(2) семантику.