.\" -*- coding: UTF-8 -*-
.\" Copyright (C) 2001 Andries Brouwer <aeb@cwi.nl>.
.\"
.\" %%%LICENSE_START(VERBATIM)
.\" Permission is granted to make and distribute verbatim copies of this
.\" manual provided the copyright notice and this permission notice are
.\" preserved on all copies.
.\"
.\" Permission is granted to copy and distribute modified versions of this
.\" manual under the conditions for verbatim copying, provided that the
.\" entire resulting derived work is distributed under the terms of a
.\" permission notice identical to this one.
.\"
.\" Since the Linux kernel and libraries are constantly changing, this
.\" manual page may be incorrect or out-of-date.  The author(s) assume no
.\" responsibility for errors or omissions, or for damages resulting from
.\" the use of the information contained herein.  The author(s) may not
.\" have taken the same level of care in the production of this manual,
.\" which is licensed free of charge, as they might when working
.\" professionally.
.\"
.\" Formatted or processed versions of this manual, if unaccompanied by
.\" the source, must acknowledge the copyright and authors of this work.
.\" %%%LICENSE_END
.\"
.\"*******************************************************************
.\"
.\" This file was generated with po4a. Translate the source file.
.\"
.\"*******************************************************************
.TH FLOCKFILE 3 "13 lipca 2017 r." "" "Podręcznik programisty Linuksa"
.SH NAZWA
flockfile, ftrylockfile, funlockfile \- blokowanie strumienia FILE dla stdio
.SH SKŁADNIA
.nf
\fB#include <stdio.h>\fP
.PP
\fBvoid flockfile(FILE *\fP\fIfilehandle\fP\fB);\fP
\fBint ftrylockfile(FILE *\fP\fIfilehandle\fP\fB);\fP
\fBvoid funlockfile(FILE *\fP\fIfilehandle\fP\fB);\fP
.fi
.PP
.in -4n
Wymagane ustawienia makr biblioteki glibc (patrz \fBfeature_test_macros\fP(7)):
.in
.ad l
.PP
Wszystkie pokazane wyżej funkcje:
.RS 4
/* Od glibc 2.24: */ _POSIX_C_SOURCE\ >=\ 199309L
    || /* Wersje glibc <= 2.23: */ _POSIX_C_SOURCE
    || /* Wersje glibc <= 2.19: */ _BSD_SOURCE || _SVID_SOURCE
.RE
.ad b
.SH OPIS
Powyższe funkcje stdio są przystosowane do pracy wielowątkowej. Uzyskuje się
to przez przypisanie każdemu z obiektów \fIFILE\fP 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 \fIFILE\fP
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.
.PP
(Uwaga: blokowanie to nie ma nic wspólnego z blokowaniem plików za pomocą
funkcji w rodzaju \fBflock\fP(2) i \fBlockf\fP(3)).
.PP
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.
.PP
W takich sytuacjach wątek może jawnie zablokować obiekt \fIFILE\fP, 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: \fBgetc_unlocked\fP(3) oraz
\fBputc_unlocked\fP(3) zamiast \fBgetc\fP(3) i \fBputc\fP(3).
.PP
Funkcja \fBflockfile\fP() czeka aż \fI*filehandle\fP nie będzie zablokowany przez
inny wątek, a następnie czyni bieżący wątek właścicielem \fI*filehandle\fP i
zwiększa o jeden licznik blokad.
.PP
Funkcja \fBfunlockfile\fP() zmniejsza licznik blokad o jeden.
.PP
Funkcja \fBftrylockfile\fP() jest nieblokującą wersją \fBflockfile\fP(). Nie robi
nic, gdy inny wątek jest właścicielem \fI*filehandle\fP, a w przeciwnym
przypadku przejmuje własność i zwiększa licznik blokad o jeden.
.SH "WARTOŚĆ ZWRACANA"
Funkcja \fBftrylockfile\fP() zwraca zero w przypadku sukcesu (blokada została
założona), a wartość niezerową w razie niepowodzenia.
.SH BŁĘDY
Brak.
.SH ATRYBUTY
Informacje o pojęciach używanych w tym rozdziale można znaleźć w podręczniku
\fBattributes\fP(7).
.TS
allbox;
lbw29 lb lb
l l l.
Interfejs	Atrybut	Wartość
T{
\fBflockfile\fP(),
\fBftrylockfile\fP(),
\fBfunlockfile\fP()
T}	Bezpieczeństwo wątkowe	MT\-Safe
.TE
.SH "ZGODNE Z"
POSIX.1\-2001, POSIX.1\-2008.
.SH DOSTĘPNOŚĆ
Funkcje te są dostępne, gdy zdefiniowane jest
\fB_POSIX_THREAD_SAFE_FUNCTIONS\fP.
.SH "ZOBACZ TAKŻE"
\fBunlocked_stdio\fP(3)
.SH "O STRONIE"
Angielska wersja tej strony pochodzi z wydania 5.04 projektu Linux
\fIman\-pages\fP. 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/.

.SH 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
.UR https://www.gnu.org/licenses/gpl-3.0.html
GNU General Public License w wersji 3
.UE
lub nowszej. Nie przyjmuje się ŻADNEJ ODPOWIEDZIALNOŚCI.

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