Provided by: manpages-de-dev_1.11-1_all bug

BEZEICHNUNG

       readdir, readdir_r - liest ein Verzeichnis

ÜBERSICHT

       #include <dirent.h>

       struct dirent *readdir(DIR *dirp);

       int readdir_r(DIR *dirp, struct dirent *entry, struct dirent **result);

   Mit Glibc erforderliche Makros (siehe feature_test_macros(7)):

       readdir_r():
           _POSIX_C_SOURCE >= 1 || _XOPEN_SOURCE || _BSD_SOURCE || _SVID_SOURCE || _POSIX_SOURCE

BESCHREIBUNG

       Die  Funktion readdir() liefert einen Zeiger auf eine dirent-Struktur zurück, welche den nächsten Eintrag
       in dem Verzeichnis darstellt, auf das dirp weist. Falls das Dateiende  erreicht  wurde  oder  ein  Fehler
       auftrat, wird ein NULL-Zeiger zurückgegeben.

       Unter Linux ist die Struktur dirent wie folgt definiert:

           struct dirent {
               ino_t          d_ino;       /* Inode-Nummer */
               off_t          d_off;       /* kein Offset; siehe ANMERKUNGEN */
               unsigned short d_reclen;    /* Länge dieses Datensatzes */
               unsigned char  d_type;      /* Dateityp; nicht von allen
                                              Dateisystemtypen unterstützt */
              char            d_name[256]; /* Dateiname */
           };

       POSIX.1  fordert  in  der dirent-Struktur lediglich die Felder d_name[] von nicht festgelegter Größe, mit
       höchstens NAME_MAX Zeichen vor dem abschließenden Null-Byte ('\0') sowie (als XSI-Erweiterung) d_ino. Die
       anderen Felder sind nicht standardisiert und nicht auf allen  Systemen  vorhanden;  siehe  die  folgenden
       ANMERKUNGEN für einige weitere Details.

       Die  von readdir() zurückgegebenen Daten können bei nachfolgenden Aufrufen von readdir() für den gleichen
       Verzeichnis-Stream überschrieben werden.

       Die Funktion readdir_r() ist  eine  ablaufinvariante  Version  von  readdir().  Sie  liest  den  nächsten
       Verzeichniseintrag  aus  dem  Verzeichnis-Stream  dirp  und  gibt  diesen  in den vom aufrufenden Prozess
       bereitgestellten Puffer, auf den entry weist, zurück.  (Siehe  ANMERKUNGEN  für  Informationen  über  die
       Bereitstellung  dieses  Puffers.)  Ein  Zeiger auf den zurückgegebenen Eintrag wird in *result platziert;
       falls das Ende der Verzeichnis-Streams erreicht wurde, wird stattdessen NULL in *result zurückgegeben.

RÜCKGABEWERT

       Nach erfolgreichem Abschluss gibt readdir() einen Zeiger auf eine dirent-Struktur zurück. (Diese Struktur
       kann statisch bereitgestellt worden sein; versuchen Sie nicht, den Speicher mittels free(3) freizugeben.)
       Falls das Ende des Verzeichnis-Streams erreicht wird, ist der Rückgabewert  NULL  und  errno  wird  nicht
       geändert. Wenn ein Fehler eintritt, wird NULL zurückgegeben und errno wird entsprechend gesetzt.

       Bei  Erfolg gibt die Funktion readdir_r() 0 zurück; im Fehlerfall eine positive Fehlernummer (aufgelistet
       unter ERRORS). Wenn das Ende des Verzeichnis-Streams  erreicht  wird,  gibt  readdir_r()  0  zurück,  der
       Rückgabewert von *result ist dann NULL.

FEHLER

       EBADF  Unzulässiger Deskriptor für den Verzeichnis-Stream dirp.

ATTRIBUTE

       Siehe attributes(7) für eine Erläuterung der in diesem Abschnitt verwandten Ausdrücke.
       ┌───────────────┬───────────────────────┬──────────────────────────┐
       │ SchnittstelleAttributWert                     │
       ├───────────────┼───────────────────────┼──────────────────────────┤
       │ readdir()     │ Multithread-Fähigkeit │ MT-Unsafe race:dirstream │
       ├───────────────┼───────────────────────┼──────────────────────────┤
       │ readdir_r()   │ Multithread-Fähigkeit │ MT-Safe                  │
       └───────────────┴───────────────────────┴──────────────────────────┘

KONFORM ZU

       POSIX.1-2001, POSIX.1-2008, SVr4, 4.3BSD.

ANMERKUNGEN

       Von  POSIX.1  werden  nur die Felder d_name und d_ino beschrieben. Die restlichen Felder sind auf vielen,
       aber nicht allen Systemen verfügbar. Unter Glibc können Programme die Verfügbarkeit der nicht von POSIX.1
       definierten  Felder  überprüfen.  Dazu  müssen  sie  prüfen,   ob   die   Makros   _DIRENT_HAVE_D_NAMLEN,
       _DIRENT_HAVE_D_RECLEN, _DIRENT_HAVE_D_OFF oder _DIRENT_HAVE_D_TYPE definiert sind.

       Der  in  d_off  zurückgegebene  Wert  ist  der  gleiche, als wenn telldir(3) an der aktuellen Position im
       Verzeichnis-Datenstrom aufgerufen werden würde. Beachten Sie, dass ungeachtet des  Typs  und  Namens  das
       d_off-Feld  in  modernen  Dateisystemen  selten  ein  Verzeichnis-Offset irgendeiner Art ist. Anwendungen
       sollten dieses Feld als verdeckten Wert auffassen und keine Vermutungen  über  dessen  Inhalt  anstellen;
       siehe auch telldir(3).

       Das Feld d_type steht im Gegensatz zu Linux hauptsächlich nur auf BSD-Systemen zur Verfügung. Dieses Feld
       ermöglicht  es,  den  Aufwand für den Aufruf von lstat(2) zu vermeiden, wenn weitere Aktionen von der Art
       der Datei abhängen. Wenn das Feature-Test-Makro _BSD_SOURCE definiert ist, definiert Glibc die  folgenden
       Makro-Konstanten für den Rückgabewert von d_type:

       DT_BLK      Dies ist ein blockorientiertes Gerät.

       DT_CHR      Dies ist ein zeichenorientiertes Gerät.

       DT_DIR      Dies ist ein Verzeichnis.

       DT_FIFO     Dies ist ein FIFO (eine benannte Pipe).

       DT_LNK      Dies ist ein symbolischer Link.

       DT_REG      Dies ist eine reguläre Datei.

       DT_SOCK     Dies ist ein UNIX Domain Socket.

       DT_UNKNOWN  Der Dateityp ist unbekannt.

       Wenn der Dateityp nicht bestimmt werden konnte, wird in d_type der Wert DT_UNKNOWN zurückgegeben.

       Derzeit  unterstützen  nur  ein  paar Dateisysteme (darunter Btrfs, ext2, ext3 und ext4) die Rückgabe des
       Dateityps in d_type vollständig. Alle Anwendungen müssen mit dem Rückgabewert DT_UNKNOWN umgehen können.

       Da POSIX.1 die Größe des Feldes d_name nicht festlegt und weitere  nicht  standardisierte  Felder  diesem
       Feld  innerhalb  der  dirent-Struktur  vorausgehen können, sollten portable Anwendungen, die readdir_r ()
       verwenden, den Puffer, dessen Adresse in entry übergeben wird, wie folgt bereitstellen:

           name_max = pathconf(dirpath, _PC_NAME_MAX);
           if (name_max == -1)         /* Grenze nicht definiert, oder Fehler */
               name_max = 255;         /* etwas vermuten */
           len = offsetof(struct dirent, d_name) + name_max + 1;
           entryp = malloc(len);

       (POSIX.1 fordert, dass d_name das letzte Feld in struct dirent ist.)

SIEHE AUCH

       getdents(2), read(2), closedir(3), dirfd(3), ftw(3), offsetof(3), opendir(3),  rewinddir(3),  scandir(3),
       seekdir(3), telldir(3)

KOLOPHON

       Diese  Seite  ist  Teil  der  Veröffentlichung  4.04  des Projekts Linux-man-pages. Eine Beschreibung des
       Projekts, Informationen, wie Fehler gemeldet werden können sowie die aktuelle Version dieser Seite finden
       sich unter http://www.kernel.org/doc/man-pages/.

ÜBERSETZUNG

       Die deutsche Übersetzung dieser Handbuchseite wurde von Markus Kaufmann  <markus.kaufmann@gmx.de>,  Helge
       Kreutzmann <debian@helgefjell.de> und Martin Eberhard Schauer <Martin.E.Schauer@gmx.de> erstellt.

       Diese  Übersetzung ist Freie Dokumentation; lesen Sie die GNU General Public License Version 3 oder neuer
       bezüglich der Copyright-Bedingungen. Es wird KEINE HAFTUNG übernommen.

       Wenn Sie Fehler in der Übersetzung dieser  Handbuchseite  finden,  schicken  Sie  bitte  eine  E-Mail  an
       <debian-l10n-german@lists.debian.org>.

                                                 8. August 2015                                       READDIR(3)