readdir_r(3) Library Functions Manual readdir_r(3) NUME readdir_r - citete un director BIBLIOTECA Biblioteca C standard (libc, -lc) REZUMAT #include [[depreciat]] int readdir_r(DIR *restrict dirp, struct dirent *restrict entry, struct dirent **restrict result); Cerine pentru macrocomenzi de testare a caracteristicilor pentru glibc (consultai feature_test_macros(7)): readdir_r(): _POSIX_C_SOURCE || /* glibc <= 2.19: */ _BSD_SOURCE || _SVID_SOURCE DESCRIERE Aceasta funcie este depaita; utilizai in schimb readdir(3). Funcia readdir_r() a fost inventata ca o versiune reentranta a readdir(3). Aceasta citete urmatoarea intrare de director din fluxul de directoare dirp i o returneaza in memoria tampon alocata de apelant, indicata de entry. Pentru detalii privind structura dirent, a se vedea readdir(3). Un indicator la memoria tampon returnata este plasat in *result; daca a fost intalnit sfaritul fluxului de directoare, atunci NULL este returnat in *result. Se recomanda ca aplicaiile sa utilizeze readdir(3) in loc de readdir_r(). In plus, incepand cu glibc 2.24, glibc depreciaza readdir_r(). Motivele sunt urmatoarele: o In sistemele in care NAME_MAX este nedefinit, apelarea readdir_r() poate fi nesigura, deoarece interfaa nu permite apelantului sa specifice lungimea memoriei tampon utilizate pentru intrarea de director returnata. o Pe unele sisteme, readdir_r() nu poate citi intrarile de directoare cu nume foarte lungi. Atunci cand implementarea glibc intalnete un astfel de nume, readdir_r() eueaza cu eroarea ENAMETOOLONG dupa ce a fost citita ultima intrare de director. Pe alte sisteme, readdir_r() poate returna o stare de succes, dar campul d_name returnat poate sa nu fie terminat la zero sau poate fi trunchiat. o In specificaia POSIX.1 actuala (POSIX.1-2008), readdir(3) nu este necesar sa fie sigur pentru fire de execuie. Cu toate acestea, in implementarile moderne (inclusiv in implementarea glibc), apelurile simultane la readdir(3) care specifica fluxuri de directoare diferite sunt sigure pentru fire. Prin urmare, utilizarea lui readdir_r() nu este, in general, necesara in programele cu mai multe fire. In cazurile in care mai multe fire de execuie trebuie sa citeasca din acelai flux de directoare, utilizarea readdir(3) cu sincronizare externa este in continuare preferabila utilizarii readdir_r(), din motivele prezentate la punctele de mai sus. o Se preconizeaza ca o versiune viitoare a POSIX.1 va face ca readdir_r() sa devina invechit i va impune ca readdir(3) sa fie sigur pentru firele de execuie atunci cand este utilizat simultan pe diferite fluxuri de directoare. VALOAREA RETURNATA Funcia readdir_r() returneaza 0 in caz de succes. In caz de eroare, aceasta returneaza un numar pozitiv de eroare (enumerat la rubrica ERRORI). Daca se ajunge la sfaritul fluxului de directoare, readdir_r() returneaza 0 i returneaza NULL in *result. ERORI-IEIRE EBADF Descriptor de flux de director nevalid dirp. ENAMETOOLONG A fost intalnita o intrare de director al carei nume era prea lung pentru a fi citit. ATRIBUTE Pentru o explicaie a termenilor folosii in aceasta seciune, a se vedea attributes(7). +--------------------------------------+---------------------+---------+ |Interfaa | Atribut | Valoare | +--------------------------------------+---------------------+---------+ |readdir_r() | Sigurana firelor | MT-Safe | +--------------------------------------+---------------------+---------+ STANDARDE POSIX.1-2008. ISTORIC POSIX.1-2001. CONSULTAI I readdir(3) TRADUCERE Traducerea in limba romana a acestui manual a fost facuta de Remus- Gabriel Chelu Aceasta traducere este documentaie gratuita; citii Licena publica generala GNU Versiunea 3 sau o versiune ulterioara cu privire la condiii privind drepturile de autor. NU se asuma NICIO RESPONSABILITATE. Daca gasii erori in traducerea acestui manual, va rugam sa trimitei un e-mail la . Pagini de manual de Linux 6.06 31 octombrie 2023 readdir_r(3)