Provided by: manpages-ro-dev_4.21.0-2_all bug

NUME

       flockfile,  ftrylockfile,  funlockfile,  funlockfile  -  blochează  un FIȘIER pentru stdio
       (intrarea/ieșirea standard)

BIBLIOTECA

       Biblioteca C standard (libc, -lc)

REZUMAT

       #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

       Niciunul.

ATRIBUTE

       Pentru o explicație a termenilor folosiți în această secțiune, a se vedea attributes(7).

       ┌───────────────────────────────────────────────────────────┬───────────────────┬─────────┐
       │InterfațăAtributValoare │
       ├───────────────────────────────────────────────────────────┼───────────────────┼─────────┤
       │flockfile(), ftrylockfile(), funlockfile()                 │ Siguranța firelor │ MT-Safe │
       └───────────────────────────────────────────────────────────┴───────────────────┴─────────┘

STANDARDE

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

       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  creată  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⟩.