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) семантику.