Provided by: manpages-ru-dev_4.21.0-2_all 
      
    
ИМЯ
       flockfile, ftrylockfile, funlockfile - блокирует FILE для stdio
LIBRARY
       Standard C library (libc, -lc)
СИНТАКСИС
       #include <stdio.h>
       void flockfile(FILE *filehandle);
       int ftrylockfile(FILE *filehandle);
       void funlockfile(FILE *filehandle);
   Требования макроса тестирования свойств для glibc (см. feature_test_macros(7)):
       Все функции, показанные выше:
           /* Since glibc 2.24: */ _POSIX_C_SOURCE >= 199309L
               || /* glibc <= 2.23: */ _POSIX_C_SOURCE
               || /* glibc <= 2.19: */ _BSD_SOURCE || _SVID_SOURCE
ОПИСАНИЕ
       Функции  stdio  можно  без  опаски использовать в нитях. Это достигается назначением каждому объекту FILE
       счётчика блокировок и (если счётчик не равен нулю) нити-владельца. При  каждом  библиотечном  вызове  эти
       функции  ждут разблокировки объекта FILE другой нитью, блокируют его, а затем выполняют заданную операцию
       ввода/вывода и разблокируют объект.
       (Замечание: блокировка не учитывается, если блокировка файла осуществлялась функциями  типа  flock(2)   и
       lockf(3).)
       Всё  это  прозрачно  и  незаметно  для программиста на С, но всё же есть две причины для более подробного
       изучения. Первая: возможны последовательности операций ввода/вывода в одной нити, при этом другая нить не
       будет прерывать ввод/вывод. Вторая: можно избежать чрезмерной нагрузки от блокировок.
       С этой целью нить может явно блокировать объект FILE, осуществить серию операций  ввода/вывода,  а  затем
       снять блокировку. При этом другие нити не могут вклиниться между операциями. Если причиной для реализации
       всего  этого является повышение эффективности работы, то для ввода/вывод можно использовать неблокирующие
       версии функций stdio: getc_unlocked(3) и putc_unlocked(3) вместо getc(3) и putc(3).
       Функция flockfile() ожидает, пока *filehandle не разблокируется другой нитью, затем делает  текущую  нить
       владельцем *filehandle и увеличивает счётчик блокировок.
       Функция funlockfile() уменьшает счётчик блокировок.
       Функция  ftrylockfile()  является  неблокирующей  версией flockfile(). Она ничего не делает в том случае,
       если другая нить владеет *filehandle, в противном случае устанавливает  статус  владельца  и  увеличивает
       счётчик блокировок.
ВОЗВРАЩАЕМОЕ ЗНАЧЕНИЕ
       При  успешном  выполнении функция ftrylockfile() возвращает ноль (была получена блокировка) или ненулевое
       значение при ошибках.
ОШИБКИ
       Нет.
АТРИБУТЫ
       Описание терминов данного раздела смотрите в attributes(7).
       ┌─────────────────────────────────────────────────────────────────────┬──────────────────────┬──────────┐
       │ Интерфейс                                                           │ Атрибут              │ Значение │
       ├─────────────────────────────────────────────────────────────────────┼──────────────────────┼──────────┤
       │ flockfile(), ftrylockfile(), funlockfile()                          │ Безвредность в нитях │ MT-Safe  │
       └─────────────────────────────────────────────────────────────────────┴──────────────────────┴──────────┘
СТАНДАРТЫ
       POSIX.1-2001, POSIX.1-2008.
       Эти функции доступны, если определено _POSIX_THREAD_SAFE_FUNCTIONS.
СМ. ТАКЖЕ
       unlocked_stdio(3)
ПЕРЕВОД
       Русский перевод этой страницы руководства был сделан Azamat Hackimov <azamat.hackimov@gmail.com>,  Dmitry
       Bolkhovskikh <d20052005@yandex.ru>, Yuri Kozlov <yuray@komyakino.ru> и Иван Павлов <pavia00@gmail.com>
       Этот перевод является бесплатной документацией; прочитайте Стандартную общественную лицензию GNU версии 3
       или более позднюю, чтобы узнать об условиях авторского права. Мы не несем НИКАКОЙ ОТВЕТСТВЕННОСТИ.
       Если  вы обнаружите ошибки в переводе этой страницы руководства, пожалуйста, отправьте электронное письмо
       на man-pages-ru-talks@lists.sourceforge.net.
Linux man-pages 6.03                            5 февраля 2023 г.                                   flockfile(3)