.\" -*- coding: UTF-8 -*- '\" t .\" Copyright (C) 1993 David Metcalfe (david@prism.demon.co.uk) .\" and Copyright (C) 2008, 2016 Michael Kerrisk .\" .\" SPDX-License-Identifier: Linux-man-pages-copyleft .\" .\" References consulted: .\" Linux libc source code .\" Lewine's _POSIX Programmer's Guide_ (O'Reilly & Associates, 1991) .\" 386BSD man pages .\" Modified Sat Jul 24 16:09:49 1993 by Rik Faith (faith@cs.unc.edu) .\" Modified 11 June 1995 by Andries Brouwer (aeb@cwi.nl) .\" Modified 22 July 1996 by Andries Brouwer (aeb@cwi.nl) .\" 2007-07-30 Ulrich Drepper , mtk: .\" Rework discussion of nonstandard structure fields. .\" .\"******************************************************************* .\" .\" This file was generated with po4a. Translate the source file. .\" .\"******************************************************************* .TH readdir 3 "23 iulie 2024" "Pagini de manual de Linux 6.12" .SH NUME readdir \- citește un director .SH BIBLIOTECA Biblioteca C standard (\fIlibc\fP, \fI\-lc\fP) .SH SINOPSIS .nf \fB#include \fP .P \fBstruct dirent *readdir(DIR *\fP\fIdirp\fP\fB);\fP .fi .SH DESCRIERE Funcția \fBreaddir\fP() returnează un indicator către o structură \fIdirent\fP care reprezintă următoarea intrare de director din fluxul de directoare indicat de \fIdirp\fP. Aceasta returnează NULL dacă se ajunge la sfârșitul fluxului de directoare sau dacă s\-a produs o eroare. .P În implementarea glibc, structura \fIdirent\fP este definită după cum urmează: .P .in +4n .EX struct dirent { ino_t d_ino; /* Numărul nodului\-i */ off_t d_off; /* Nu este un decalaj; a se vedea mai jos */ unsigned short d_reclen; /* Lungimea acestei înregistrări */ unsigned char d_type; /* Tipul de fișier; nu este acceptat de către toate tipurile de sisteme de fișiere */ char d_name[256]; /* Nume de fișier cu terminație nulă */ }; .EE .in .P Singurele câmpuri din structura \fIdirent\fP care sunt impuse de POSIX.1 sunt \fId_name\fP și \fId_ino\fP. Celelalte câmpuri nu sunt standardizate și nu sunt prezente pe toate sistemele; a se vedea secțiunea VERSIUNI. .P Câmpurile structurii \fIdirent\fP sunt următoarele: .TP \fId_ino\fP Acesta este numărul nodului\-i al fișierului. .TP \fId_off\fP .\" https://lwn.net/Articles/544298/ Valoarea returnată în \fId_off\fP este aceeași care ar fi returnată prin apelarea \fBtelldir\fP(3) la poziția curentă în fluxul de directoare. Rețineți că, în ciuda tipului și numelui său, câmpul \fId_off\fP este rareori un fel de decalaj de director pe sistemele de fișiere moderne. Aplicațiile trebuie să trateze acest câmp ca pe o valoare opacă, fără a face presupuneri cu privire la conținutul său; consultați și \fBtelldir\fP(3). .TP \fId_reclen\fP Aceasta este dimensiunea (în octeți) a înregistrării returnate. Aceasta poate să nu coincidă cu dimensiunea definiției structurii prezentate mai sus; a se vedea secțiunea VERSIUNI. .TP \fId_type\fP Acest câmp conține o valoare care indică tipul de fișier, ceea ce permite evitarea apelării \fBlstat\fP(2) dacă acțiunile ulterioare depind de tipul fișierului. .IP Atunci când este definit un macro test de caracteristică adecvat (\fB_DEFAULT_SOURCE\fP de la glibc 2.19 sau \fB_BSD_SOURCE\fP la glibc 2.19 și versiunile anterioare), glibc definește următoarele constante macro pentru valoarea returnată în \fId_type\fP: .RS .TP 12 \fBDT_BLK\fP Acesta este un dispozitiv de blocuri. .TP \fBDT_CHR\fP Acesta este un dispozitiv de caractere. .TP \fBDT_DIR\fP Acesta este un director. .TP \fBDT_FIFO\fP Aceasta este o conductă cu nume (FIFO). .TP \fBDT_LNK\fP Aceasta este o legătură simbolică. .TP \fBDT_REG\fP Acesta este un fișier obișnuit. .TP \fBDT_SOCK\fP Acesta este un soclu de domeniu UNIX. .TP \fBDT_UNKNOWN\fP Tipul fișierului nu a putut fi determinat. .RE .IP .\" kernel 2.6.27 .\" The same sentence is in getdents.2 În prezent, numai unele sisteme de fișiere (printre care: Btrfs, ext2, ext3 și ext4) au suport complet pentru returnarea tipului de fișier în \fId_type\fP. Toate aplicațiile trebuie să gestioneze în mod corespunzător o returnare de tip \fBDT_UNKNOWN\fP. .TP \fId_name\fP Acest câmp conține numele de fișier cu terminație nulă; a se vedea secțiunea VERSIUNI. .P Datele returnate de \fBreaddir\fP() pot fi suprascrise de apeluri ulterioare la \fBreaddir\fP() pentru același flux de directoare. .SH "VALOAREA RETURNATĂ" În caz de succes, \fBreaddir\fP() returnează un indicator către o structură \fIdirent\fP. Această structură poate fi alocată static; nu încercați să o eliberați cu \fBfree\fP(3). .P Dacă se ajunge la sfârșitul fluxului de directoare, se returnează NULL și \fIerrno\fP nu este modificată. Dacă apare o eroare, NULL este returnat și \fIerrno\fP este configurată pentru a indica eroarea. Pentru a distinge sfârșitul fluxului de o eroare, definiți \fIerrno\fP la zero înainte de a apela \fBreaddir\fP() și apoi verificați valoarea lui \fIerrno\fP dacă este returnat NULL. .SH ERORI\-IEȘIRE .TP \fBEBADF\fP Descriptor de flux de director nevalid \fIdirp\fP. .SH ATRIBUTE Pentru o explicație a termenilor folosiți în această secțiune, a se vedea \fBattributes\fP(7). .TS allbox; lbx lb lb l l l. Interfață Atribut Valoare T{ .na .nh \fBreaddir\fP() T} Siguranța firelor MT\-Unsafe race:dirstream .TE .P .\" FIXME . .\" http://www.austingroupbugs.net/view.php?id=696 În actuala specificație POSIX.1 (POSIX.1\-2008), \fBreaddir\fP() nu este necesar să fie sigur pentru fir. Cu toate acestea, în implementările moderne (inclusiv implementarea glibc), apelurile concurente la \fBreaddir\fP() care specifică fluxuri de directoare diferite sunt sigure pentru fire. În cazurile în care mai multe fire de execuție trebuie să citească din același flux de directoare, utilizarea \fBreaddir\fP() cu sincronizare externă este preferabilă utilizării funcției depreciate \fBreaddir_r\fP(3). Se preconizează că o versiune viitoare a POSIX.1 va solicita ca funcția \fBreaddir\fP() să fie sigură pentru fire atunci când este utilizată concomitent pe diferite fluxuri de directoare. .SH VERSIUNI .\" POSIX.1-2001, POSIX.1-2008 .\" Doar câmpurile \fId_name\fP și (ca extensie XSI) \fId_ino\fP sunt specificate în POSIX.1. În afară de Linux, câmpul \fId_type\fP este disponibil în principal numai pe sistemele BSD. Celelalte câmpuri sunt disponibile pe multe, dar nu pe toate sistemele. Sub glibc, programele pot verifica disponibilitatea câmpurilor care nu sunt definite în POSIX.1 testând dacă macro\-urile \fB_DIRENT_HAVE_D_NAMLEN\fP, \fB_DIRENT_HAVE_D_RECLEN\fP, \fB_DIRENT_HAVE_D_OFF\fP sau \fB_DIRENT_HAVE_D_TYPE\fP sunt definite. .SS "Câmpul d_name" Definiția structurii \fIdirent\fP prezentată mai sus este preluată din anteturile glibc și prezintă câmpul \fId_name\fP cu o dimensiune fixă. .P \fIAvertisment\fP: aplicațiile trebuie să evite orice dependență de dimensiunea câmpului \fId_name\fP. POSIX îl definește ca fiind \fIchar\ d_name[]\fP, o matrice de caractere de dimensiune nespecificată, cu cel mult \fBNAME_MAX\fP caractere care preced octetul nul final („\[rs]0”). .P POSIX.1 menționează în mod explicit că acest câmp nu ar trebui să fie utilizat ca o valoare „lvalue”. Standardul menționează, de asemenea, că utilizarea \fIsizeof(d_name)\fP este incorectă; utilizați în schimb \fIstrlen(d_name)\fP; (pe unele sisteme, acest câmp este definit ca \fIchar\ d_name[1]\fP!) Implicit, utilizarea \fIsizeof(struct dirent)\fP pentru a capta dimensiunea înregistrării, inclusiv dimensiunea lui \fId_name\fP, este de asemenea incorectă. .P Rețineți că, în timp ce apelul .P .in +4n .EX fpathconf(fd, _PC_NAME_MAX) .EE .in .P returnează valoarea 255 pentru majoritatea sistemelor de fișiere, pe unele sisteme de fișiere (de exemplu, CIFS, servere Windows SMB), numele de fișier cu terminație nulă care este (corect) returnat în \fId_name\fP poate depăși de fapt această dimensiune. În astfel de cazuri, câmpul \fId_reclen\fP va conține o valoare care depășește dimensiunea structurii glibc \fIdirent\fP prezentată mai sus. .SH STANDARDE POSIX.1\-2008. .SH ISTORIC POSIX.1\-2001, SVr4, 4.3BSD. .SH NOTE Un flux de directoare este deschis utilizând \fBopendir\fP(3). .P Ordinea în care numele de fișiere sunt citite prin apeluri succesive la \fBreaddir\fP() depinde de implementarea sistemului de fișiere; este puțin probabil ca numele să fie sortate în vreun fel. .SH "CONSULTAȚI ȘI" \fBgetdents\fP(2), \fBread\fP(2), \fBclosedir\fP(3), \fBdirfd\fP(3), \fBftw\fP(3), \fBoffsetof\fP(3), \fBopendir\fP(3), \fBreaddir_r\fP(3), \fBrewinddir\fP(3), \fBscandir\fP(3), \fBseekdir\fP(3), \fBtelldir\fP(3) .PP .SH TRADUCERE Traducerea în limba română a acestui manual a fost făcută de Remus-Gabriel Chelu . .PP Această traducere este documentație gratuită; citiți .UR https://www.gnu.org/licenses/gpl-3.0.html Licența publică generală GNU Versiunea 3 .UE sau o versiune ulterioară cu privire la condiții privind drepturile de autor. NU se asumă NICIO RESPONSABILITATE. .PP Dacă găsiți erori în traducerea acestui manual, vă rugăm să trimiteți un e-mail la .MT translation-team-ro@lists.sourceforge.net .ME .