Provided by: manpages-pl-dev_4.13-4_all bug

NAZWA

       flockfile, ftrylockfile, funlockfile - blokowanie strumienia FILE dla stdio

SKŁADNIA

       #include <stdio.h>

       void flockfile(FILE *filehandle);
       int ftrylockfile(FILE *filehandle);
       void funlockfile(FILE *filehandle);

   Wymagane ustawienia makr biblioteki glibc (patrz feature_test_macros(7)):

       Wszystkie funkcje powyżej:
           /* Od glibc 2.24: */ _POSIX_C_SOURCE >= 199309L
               || /* Wersje glibc <= 2.23: */ _POSIX_C_SOURCE
               || /* Wersje glibc <= 2.19: */ _BSD_SOURCE || _SVID_SOURCE

OPIS

       Powyższe funkcje stdio są przystosowane do pracy wielowątkowej. Uzyskuje się to przez przypisanie każdemu
       z  obiektów  FILE  licznika  blokad  oraz  (jeśli  wartość   licznika jest niezerowa) wątku będącego jego
       właścicielem. Przy każdym wywołaniu funkcji bibliotecznej funkcje te czekają, aż obiekt FILE  nie  będzie
       już  blokowany  przez  inny  wątek,  a  następnie  go blokują, wykonują żądane operacje wejścia/wyjścia i
       odblokowują obiekt ponownie.

       (Uwaga: blokowanie to nie ma nic wspólnego z blokowaniem plików za pomocą funkcji w  rodzaju  flock(2)  i
       lockf(3)).

       Wszystko  to  dzieje  się  w  sposób  niewidoczny  dla  programisty C, jednak mogą pojawić się dwa powody
       wymagające bardziej szczegółowej kontroli. Z jednej strony szereg operacji wejścia/wyjścia wykonywanych w
       jednym wątku może stanowić całość, która nie może zostać przerwana przez operację wejścia/wyjścia  innego
       wątku.  Z drugiej zaś strony może istnieć potrzeba uniknięcia narzutu wywołanego przez pojedyncze blokady
       w celu uzyskania większej wydajności.

       W takich sytuacjach wątek może jawnie zablokować obiekt FILE, wykonać szereg operacji  wejścia/wyjścia  i
       odblokować  go.  Uniemożliwia  to  innym  wątkom  przeszkadzanie  w międzyczasie. Jeśli powodem założenia
       blokady ma  być  osiągnięcie  większej  wydajności,  wykonuje  się  operacje  wejścia/wyjścia  za  pomocą
       nieblokujących wersji funkcji stdio: getc_unlocked(3) oraz putc_unlocked(3) zamiast getc(3) i putc(3).

       Funkcja  flockfile()  czeka  aż  *filehandle  nie  będzie zablokowany przez inny wątek, a następnie czyni
       bieżący wątek właścicielem *filehandle i zwiększa o jeden licznik blokad.

       Funkcja funlockfile() zmniejsza licznik blokad o jeden.

       Funkcja ftrylockfile()  jest  nieblokującą  wersją  flockfile().  Nie  robi  nic,  gdy  inny  wątek  jest
       właścicielem *filehandle, a w przeciwnym przypadku przejmuje własność i zwiększa licznik blokad o jeden.

WARTOŚĆ ZWRACANA

       Funkcja  ftrylockfile() zwraca zero w przypadku sukcesu (blokada została założona), a wartość niezerową w
       razie niepowodzenia.

BŁĘDY

       Brak.

ATRYBUTY

       Informacje o pojęciach używanych w tym rozdziale można znaleźć w podręczniku attributes(7).
       ┌───────────────────────────────┬────────────────────────┬─────────┐
       │ InterfejsAtrybutWartość │
       ├───────────────────────────────┼────────────────────────┼─────────┤
       │ flockfile(),  ftrylockfile(), │ Bezpieczeństwo wątkowe │ MT-Safe │
       │ funlockfile()                 │                        │         │
       └───────────────────────────────┴────────────────────────┴─────────┘

ZGODNE Z

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

       Funkcje te są dostępne, gdy zdefiniowane jest _POSIX_THREAD_SAFE_FUNCTIONS.

ZOBACZ TAKŻE

       unlocked_stdio(3)

O STRONIE

       Angielska  wersja  tej strony pochodzi z wydania 5.10 projektu Linux man-pages. Opis projektu, informacje
       dotyczące   zgłaszania   błędów   oraz   najnowszą   wersję   oryginału   można   znaleźć   pod   adresem
       https://www.kernel.org/doc/man-pages/.

T◈UMACZENIE

       Autorami    polskiego    tłumaczenia   niniejszej   strony   podręcznika   są:   Andrzej   Krzysztofowicz
       <ankry@green.mf.pg.gda.pl> i Robert Luberda <robert@debian.org>

       Niniejsze tłumaczenie jest wolną dokumentacją. Bliższe informacje  o  warunkach  licencji  można  uzyskać
       zapoznając   się   z   GNU General Public License w wersji 3   lub  nowszej.  Nie  przyjmuje  się  ŻADNEJ
       ODPOWIEDZIALNOŚCI.

       Błędy w  tłumaczeniu  strony  podręcznika  prosimy  zgłaszać  na  adres  listy  dyskusyjnej  manpages-pl-
       list@lists.sourceforge.net.

                                                9 czerwca 2020 r.                                   FLOCKFILE(3)