Provided by: manpages-ru-dev_4.18.1-1_all bug

ИМЯ

       lockf - устанавливает, проверяет или удаляет блокировку POSIX на открытом файле

LIBRARY

       Standard C library (libc, -lc)

СИНТАКСИС

       #include <unistd.h>

       int lockf(int fd, int cmd, off_t len);

   Требования макроса тестирования свойств для glibc (см. feature_test_macros(7)):

       lockf():
           _XOPEN_SOURCE >= 500
               || /* glibc >= 2.19: */ _DEFAULT_SOURCE
               || /* glibc <= 2.19: */ _BSD_SOURCE || _SVID_SOURCE

ОПИСАНИЕ

       Apply,  test,  or remove a POSIX lock on a section of an open file.  The file is specified
       by fd, a file descriptor open for writing, the action by cmd, and the section consists  of
       byte  positions  pos..pos+len-1 if len is positive, and pos-len..pos-1 if len is negative,
       where pos is the current file position, and if len is zero, the section extends  from  the
       current  file  position  to  infinity,  encompassing  the  present  and future end-of-file
       positions.  In all cases, the section may extend past current end-of-file.

       В Linux lockf() — всего лишь более удобный  способ  вызова  fcntl(2)  для  блокировки.  Во
       многих  других  системах  реализация  lockf()  сделана подобным образом, но заметим, что в
       POSIX.1 нет явной связи между блокировками lockf()  и  fcntl(2).  Переносимое  приложение,
       вероятно, должно избегать использования этих двух вызовов одновременно.

       Список существующих операций приведён ниже:

       F_LOCK Устанавливает  исключительную  блокировку указанной области файла. Если эта область
              (или её часть) уже блокирована, то вызов заблокирует выполнение до тех пор, пока не
              будет   снята  предыдущая  блокировка.  Если  эта  область  перекрывается  с  ранее
              заблокированной областью, то они объединяются. Файловые блокировки снимаются  сразу
              после  того,  как  установивший  их процесс закрывает файловый дескриптор. Дочерние
              процессы не наследуют подобные блокировки.

       F_TLOCK
              То же самое, что и F_LOCK, но вызов никогда не блокирует  выполнение  и  возвращает
              ошибку, если файл уже заблокирован.

       F_ULOCK
              Снимает блокировку с заданной области файла. Может привести к тому, что блокируемая
              область будет поделена на две заблокированные области.

       F_TEST Проверяет наличие блокировки: возвращает 0, если указанная область не заблокирована
              или  заблокирована  вызвавшим  процессом;  возвращает  -1, меняет значение errno на
              EAGAIN (в  некоторых  системах  на  EACCES),  если  блокировка  установлена  другим
              процессом.

ВОЗВРАЩАЕМОЕ ЗНАЧЕНИЕ

       On  success, zero is returned.  On error, -1 is returned, and errno is set to indicate the
       error.

ОШИБКИ

       EACCES или EAGAIN
              Файл блокирован и указана операция F_TLOCK или F_TEST, или операция запрещена,  так
              как файл отображён в память другим процессом.

       EBADF  Значение  fd  не  является  открытым  файловым дескриптором, или значение cmd равно
              F_LOCK или F_TLOCK и файловый дескриптор fd не открыт на запись.

       EDEADLK
              Вызвана операция F_LOCK, которая приводит к вечной блокировке (deadlock).

       EINTR  При  ожидании  получения  блокировки  вызов  был  прерван  сигналом,  пришедшим   в
              обработчик; смотрите signal(7).

       EINVAL В cmd указана неправильная операция.

       ENOLCK Открыто слишком много областей для блокировки, таблица блокировок переполнена.

АТРИБУТЫ

       Описание терминов данного раздела смотрите в attributes(7).

       ┌───────────────────────────────────────────────────────┬──────────────────────┬──────────┐
       │ИнтерфейсАтрибутЗначение │
       ├───────────────────────────────────────────────────────┼──────────────────────┼──────────┤
       │lockf()                                                │ Безвредность в нитях │ MT-Safe  │
       └───────────────────────────────────────────────────────┴──────────────────────┴──────────┘

СТАНДАРТЫ

       POSIX.1-2001, POSIX.1-2008, SVr4.

СМ. ТАКЖЕ

       fcntl(2), flock(2)

       Смотрите     также     файлы     locks.txt    и    mandatory-locking.txt    из    каталога
       Documentation/filesystems с исходным кодом ядра Linux (в старых ядрах  эти  файлы  были  в
       каталоге Documentation, а mandatory-locking.txt назывался mandatory.txt).

ПЕРЕВОД

       Русский    перевод    этой    страницы    руководства    был    сделан    Artyom    Kunyov
       <artkun@guitarplayer.ru>, Azamat Hackimov <azamat.hackimov@gmail.com>, Dmitry Bolkhovskikh
       <d20052005@yandex.ru>,  Katrin  Kutepova  <blackkatelv@gmail.com>, Konstantin Shvaykovskiy
       <kot.shv@gmail.com>, Yuri Kozlov <yuray@komyakino.ru> и Иван Павлов <pavia00@gmail.com>

       Этот  перевод  является  бесплатной  документацией;  прочитайте  Стандартную  общественную
       лицензию GNU версии 3 ⟨https://www.gnu.org/licenses/gpl-3.0.html⟩ или более позднюю, чтобы
       узнать об условиях авторского права. Мы не несем НИКАКОЙ ОТВЕТСТВЕННОСТИ.

       Если вы обнаружите ошибки в переводе  этой  страницы  руководства,  пожалуйста,  отправьте
       электронное письмо на ⟨man-pages-ru-talks@lists.sourceforge.net⟩.