The OpenNET Project / Index page

[ новости /+++ | форум | wiki | теги | ]

Интерактивная система просмотра системных руководств (man-ов)

 ТемаНаборКатегория 
 
 [Cписок руководств | Печать]

flockfile ()
  • flockfile (3) ( Solaris man: Библиотечные вызовы )
  • flockfile (3) ( FreeBSD man: Библиотечные вызовы )
  • >> flockfile (3) ( Русские man: Библиотечные вызовы )
  • flockfile (3) ( Linux man: Библиотечные вызовы )
  • flockfile (3) ( POSIX man: Библиотечные вызовы )
  •  

    НАЗВАНИЕ

    flockfile, ftrylockfile, funlockfile - блокировка FILE для потока stdio  

    СИНТАКСИС

    #include <stdio.h>
    
    void flockfile(FILE *filehandle);
    
    int ftrylockfile(FILE *filehandle);
    void funlockfile(FILE *filehandle);
     

    ОПИСАНИЕ

    Функции stdio являются безопасными для подпроцессов. Это достигается назначением каждому объекту FILE номера блокировки lockcount и (если lockcount не равно нулю) главного владеющего процесса. Для каждого библиотечного вызова эти функции будут ожидать до тех пор, пока объект FILE более не блокирован другим процессом, и только затем блокируют его, выполняют заданную операцию ввода/вывода и разблокруют объект снова.

    (Примечание: это блокирование ничего не делает, если блокировка файла осуществляется функциями типа flock(2) и lockf(3).)

    Все это прозрачно и незаметно для программистов на С, но все же есть две причины для более подробного изучения. С одной стороны, возможны последовательности операций ввода/вывода в одном семействе подпроцессов, при этом другие процессы (не из этой ветви) не должны вмешиваться в работу операций ввода/вывода. С другой стороны, так можно избежать блокировок свыше для большей эффективности.

    Наконец, подпроцессы могут явно блокировать объект FILE, затем осуществить серию операций ввода/вывода, затем снять блокировку. Это предотвращает другие подроцессы от вставки своих команд во время всех этих действий. Если причиной для реализации всего этого является повышение эффективности работы, то можно использовать ввод/вывод с неблокируемыми версиями функций stdio: с getc_unlocked() и putc_unlocked() вместо getc() и putc().

    Функция flockfile() ожидает, чтобы *filehandle был разблокирован другими подроцессами, затем делает текущий процесс владельцем *filehandle, и увеличивает lockcount.

    Функция funlockfile() уменьшает счетчик блокировок.

    Функция ftrylockfile() является неблокируемой версией flockfile(). Она ничего не делает в том случае, если другие процессы владеют *filehandle, или иначе получает статус владельца и увеличивает счетчик блокировок.  

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

    Функция ftrylockfile() возвращает ноль при нормальном завершении работы (была получена блокировка) или ненулевое значение при ошибках.  

    НАЙДЕННЫЕ ОШИБКИ

    Нет.  

    ДОСТУПНОСТЬ

    Эти функции доступны при определении _POSIX_THREAD_SAFE_FUNCTIONS. Они присутствуют в libc начиная с версии 5.1.1 и в glibc начиная с версии 2.0.  

    СООТВЕТСТВИЕ СТАНДАРТАМ

    POSIX.1  

    СМ. ТАКЖЕ

    unlocked_stdio(3)


     

    Index

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


    Поиск по тексту MAN-ов: 




    Спонсоры:
    PostgresPro
    Inferno Solutions
    Hosting by Hoster.ru
    Хостинг:

    Закладки на сайте
    Проследить за страницей
    Created 1996-2022 by Maxim Chirkov
    Добавить, Поддержать, Вебмастеру