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

НАИМЕНОВАНИЕ

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

БИБЛИОТЕКА

       Стандартная библиотека языка C (libc, -lc)

ОБЗОР

       #include <unistd.h>

       int lockf(int fd, int op, 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 op, 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), если блокировка установлена другим процессом.

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

       При успешном выполнении возвращается 0. При ошибке возвращается -1, а в errno содержится код ошибки.

ОШИБКИ

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

       EBADF  fd is not an open file descriptor; or op is F_LOCK or F_TLOCK  and  fd  is  not  a  writable  file
              descriptor.

       EDEADLK
              op was F_LOCK and this lock operation would cause a deadlock.

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

       EINVAL An invalid operation was specified in op.

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

АТРИБУТЫ

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

СТАНДАРТЫ

       POSIX.1-2008.

ИСТОРИЯ

       POSIX.1-2001, 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> и Kirill Rekhov <krekhov.dev@gmail.com>

       Этот  перевод является свободной программной документацией; он распространяется на условиях общедоступной
       лицензии GNU (GNU General Public License - GPL, https://www.gnu.org/licenses/gpl-3.0.html  версии  3  или
       более поздней) в отношении авторского права, но БЕЗ КАКИХ-ЛИБО ГАРАНТИЙ.

       Если  вы  обнаружите какие-либо ошибки в переводе этой страницы руководства, пожалуйста, сообщите об этом
       разработчику(ам)  по  его(их)  адресу(ам)  электронной  почты  или  по   адресу   списка рассылки русских
       переводчиков.

Справочные страницы Linux 6.9.1                   2 мая 2024 г.                                         lockf(3)