Man page - flockfile(3)

Packages contains this manual

Available languages:

en fr es pl ja ru ro zh_TW zh_CN

Manual

flockfile

НАИМЕНОВАНИЕ
БИБЛИОТЕКА
ОБЗОР
ОПИСАНИЕ
ВОЗВРАЩАЕМОЕ ЗНАЧЕНИЕ
ОШИБКИ
АТРИБУТЫ
СТАНДАРТЫ
ИСТОРИЯ
СМОТРИТЕ ТАКЖЕ
ПЕРЕВОД

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

flockfile, ftrylockfile, funlockfile - блокирует FILE для stdio

БИБЛИОТЕКА

Стандартная библиотека языка C ( 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).

Image grohtml-632125-1.png

СТАНДАРТЫ

POSIX.1-2008.

ИСТОРИЯ

POSIX.1-2001.

Эти функции доступны, если определено _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> и Kirill Rekhov <krekhov.dev@gmail.com>

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

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