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

NUME

       readdir_r - citește un director

BIBLIOTECA

       Biblioteca C standard (libc, -lc)

REZUMAT

       #include <dirent.h>

       [[depreciat]] int readdir_r(DIR *restrict dirp,
                                    struct dirent *restrict entry,
                                    struct dirent **restrict result);

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

       readdir_r():
           _POSIX_C_SOURCE
               || /* glibc <= 2.19: */ _BSD_SOURCE || _SVID_SOURCE

DESCRIERE

       Această funcție este depășită; utilizați în schimb readdir(3).

       Funcția readdir_r() a fost inventată ca  o  versiune  reentrantă  a  readdir(3).   Aceasta
       citește  următoarea  intrare  de director din fluxul de directoare dirp și o returnează în
       memoria tampon alocată de apelant, indicată de entry.  Pentru  detalii  privind  structura
       dirent, a se vedea readdir(3).

       Un  indicator  la  memoria  tampon  returnată este plasat în *result; dacă a fost întâlnit
       sfârșitul fluxului de directoare, atunci NULL este returnat în *result.

       Se recomandă ca aplicațiile să utilizeze readdir(3)  în  loc  de  readdir_r().   În  plus,
       începând cu glibc 2.24, glibc depreciază readdir_r().  Motivele sunt următoarele:

       •  În  sistemele  în care NAME_MAX este nedefinit, apelarea readdir_r() poate fi nesigură,
          deoarece interfața  nu  permite  apelantului  să  specifice  lungimea  memoriei  tampon
          utilizate pentru intrarea de director returnată.

       •  Pe  unele  sisteme,  readdir_r()  nu  poate citi intrările de directoare cu nume foarte
          lungi.  Atunci când implementarea glibc  întâlnește  un  astfel  de  nume,  readdir_r()
          eșuează  cu  eroarea ENAMETOOLONG după ce a fost citită ultima intrare de director.  Pe
          alte sisteme, readdir_r() poate returna o stare de succes, dar câmpul  d_name  returnat
          poate să nu fie terminat la zero sau poate fi trunchiat.

       •  În specificația POSIX.1 actuală (POSIX.1-2008), readdir(3) nu este necesar să fie sigur
          pentru fire de execuție.  Cu toate acestea,  în  implementările  moderne  (inclusiv  în
          implementarea  glibc),  apelurile  simultane  la  readdir(3)  care specifică fluxuri de
          directoare diferite sunt sigure pentru fire.  Prin urmare, utilizarea  lui  readdir_r()
          nu este, în general, necesară în programele cu mai multe fire.  În cazurile în care mai
          multe fire de execuție trebuie să citească din același flux de  directoare,  utilizarea
          readdir(3)   cu   sincronizare   externă  este  în  continuare  preferabilă  utilizării
          readdir_r(), din motivele prezentate la punctele de mai sus.

       •  Se preconizează că o versiune viitoare a POSIX.1  va  face  ca  readdir_r()  să  devină
          învechit  și va impune ca readdir(3) să fie sigur pentru firele de execuție atunci când
          este utilizat simultan pe diferite fluxuri de directoare.

VALOAREA RETURNATĂ

       Funcția readdir_r() returnează 0 în caz de succes.  În caz de eroare,  aceasta  returnează
       un  număr  pozitiv  de  eroare  (enumerat la rubrica ERRORI).  Dacă se ajunge la sfârșitul
       fluxului de directoare, readdir_r() returnează 0 și returnează NULL în *result.

ERORI

       EBADF  Descriptor de flux de director nevalid dirp.

       ENAMETOOLONG
              A fost întâlnită o intrare de director al cărei nume era  prea  lung  pentru  a  fi
              citit.

ATRIBUTE

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

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

STANDARDE

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

CONSULTAȚI ȘI

       readdir(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⟩.