flockfile(3) | Library Functions Manual | flockfile(3) |
NUME
flockfile, ftrylockfile, funlockfile, funlockfile - blochează un FIȘIER pentru stdio (intrarea/ieșirea standard)
BIBLIOTECA
Biblioteca C standard (libc, -lc)
SINOPSIS
#include <stdio.h>
void flockfile(FIȘIER *filehandle); int ftrylockfile(FIȘIER *filehandle); void funlockfile(FIȘIER *filehandle);
Toate funcțiile prezentate mai sus:
/* Începând cu glibc 2.24: */ _POSIX_C_SOURCE >= 199309L || /* Versiunile de glibc <= 2.23: */ _POSIX_C_SOURCE || /* Versiunile de glibc <= 2.19: */ _BSD_SOURCE || _SVID_SOURCE
DESCRIERE
Funcțiile stdio sunt sigure pentru fire de execuție. Acest lucru se realizează prin atribuirea la fiecare obiect FIȘIER a unui număr de blocare și (dacă numărul de blocare este diferit de zero) a unui fir proprietar. Pentru fiecare apel la bibliotecă, aceste funcții așteaptă până când obiectul FIȘIER nu mai este blocat de un alt fir de execuție, apoi îl blochează, efectuează In/Ieș solicitată și deblochează din nou obiectul.
Notă: această blocare nu are nimic de-a face cu blocarea fișierelor efectuată de funcții precum flock(2) și lockf(3).
Toate acestea sunt invizibile pentru programatorul C, dar pot exista două motive pentru a dori un control mai detaliat. Pe de o parte, poate că o serie de acțiuni de intrare/ieșire efectuate de un fir de execuție se potrivesc și nu ar trebui să fie întrerupte de intrarea/ieșirea unui alt fir de execuție. Pe de altă parte, poate că, pentru o mai mare eficiență, ar trebui evitat blocajul.
În acest scop, un fir de execuție poate bloca în mod explicit obiectul FIȘIER, apoi poate efectua o serie de acțiuni de intrare/ieșire, după care poate fi deblocat. Acest lucru împiedică alte fire să intervină între ele. Dacă motivul pentru care se procedează astfel ar fi acela de a obține o mai mare eficiență, se face In/Ieș cu versiunile fără blocare ale funcțiilor stdio: cu getc_unlocked(3) și putc_unlocked(3) în loc de getc(3) și putc(3).
Funcția flockfile() așteaptă ca *filehandle să nu mai fie blocat de un alt fir de execuție, apoi îl face pe firul curent proprietar al *filehandle și mărește numărul de blocare.
Funcția funlockfile() decrementează numărul de blocare.
Funcția ftrylockfile() este o versiune fără blocare a flockfile(). Aceasta nu face nimic în cazul în care un alt fir de execuție deține *filehandle, iar în caz contrar obține proprietatea și mărește numărul de blocare.
VALOAREA RETURNATĂ
Funcția ftrylockfile() returnează zero în caz de succes (blocarea a fost obținută) și o valoare diferită de zero în caz de eșec.
ERORI-IEȘIRE
Niciunul.
ATRIBUTE
Pentru o explicație a termenilor folosiți în această secțiune, a se vedea attributes(7).
Interfață | Atribut | Valoare |
flockfile(), ftrylockfile(), funlockfile() | Siguranța firelor | MT-Safe |
STANDARDE
POSIX.1-2008.
ISTORIC
POSIX.1-2001.
Aceste funcții sunt disponibile atunci când este definită _POSIX_THREAD_SAFE_FUNCTIONS.
CONSULTAȚI ȘI
TRADUCERE
Traducerea în limba română a acestui manual a fost făcută de Remus-Gabriel Chelu <remusgabriel.chelu@disroot.org>
Această traducere este documentație gratuită; citiți Licența publică generală GNU Versiunea 3 sau o versiune ulterioară cu privire la condiții privind drepturile de autor. NU se asumă NICIO RESPONSABILITATE.
Dacă găsiți erori în traducerea acestui manual, vă rugăm să trimiteți un e-mail la translation-team-ro@lists.sourceforge.net.
2 mai 2024 | Pagini de manual de Linux 6.8 |