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);

    Cerințe pentru macrocomenzi de testare a caracteristicilor pentru glibc (consultați feature_test_macros(7)):

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
unlocked_stdio(3)

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 (https://www.gnu.org/licenses/gpl-3.0.html) 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.