.\" -*- coding: UTF-8 -*- .\" Copyright (C) 1993 David Metcalfe (david@prism.demon.co.uk) .\" .\" %%%LICENSE_START(VERBATIM) .\" Permission is granted to make and distribute verbatim copies of this .\" manual provided the copyright notice and this permission notice are .\" preserved on all copies. .\" .\" Permission is granted to copy and distribute modified versions of this .\" manual under the conditions for verbatim copying, provided that the .\" entire resulting derived work is distributed under the terms of a .\" permission notice identical to this one. .\" .\" Since the Linux kernel and libraries are constantly changing, this .\" manual page may be incorrect or out-of-date. The author(s) assume no .\" responsibility for errors or omissions, or for damages resulting from .\" the use of the information contained herein. The author(s) may not .\" have taken the same level of care in the production of this manual, .\" which is licensed free of charge, as they might when working .\" professionally. .\" .\" Formatted or processed versions of this manual, if unaccompanied by .\" the source, must acknowledge the copyright and authors of this work. .\" %%%LICENSE_END .\" .\" 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. .\" 2008-09-11, mtk, Document readdir_r(). .\" .\"******************************************************************* .\" .\" This file was generated with po4a. Translate the source file. .\" .\"******************************************************************* .TH READDIR 3 "21. Juni 2013" "" Linux\-Programmierhandbuch .SH BEZEICHNUNG readdir, readdir_r \- liest ein Verzeichnis .SH ÜBERSICHT .nf \fB#include \fP .sp \fBstruct dirent *readdir(DIR *\fP\fIdirp\fP\fB);\fP .sp \fBint readdir_r(DIR *\fP\fIdirp\fP\fB, struct dirent *\fP\fIentry\fP\fB, struct dirent **\fP\fIresult\fP\fB);\fP .fi .sp .in -4n Mit Glibc erforderliche Makros (siehe \fBfeature_test_macros\fP(7)): .ad l .in .sp \fBreaddir_r\fP(): .RS 4 _POSIX_C_SOURCE\ >=\ 1 || _XOPEN_SOURCE || _BSD_SOURCE || _SVID_SOURCE || _POSIX_SOURCE .RE .ad b .SH BESCHREIBUNG Die Funktion \fBreaddir\fP() liefert einen Zeiger auf eine \fIdirent\fP\-Struktur zurück, welche den nächsten Eintrag in dem Verzeichnis darstellt, auf das \fIdirp\fP weist. Falls das Dateiende erreicht wurde oder ein Fehler auftrat, wird ein NULL\-Zeiger zurückgegeben. .PP Unter Linux ist die Struktur \fIdirent\fP wie folgt definiert: .PP .in +4n .nf 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 */ }; .fi .in .PP POSIX.1 fordert in der \fIdirent\fP\-Struktur lediglich die Felder \fId_name\fP[] von nicht festgelegter Größe, mit höchstens \fBNAME_MAX\fP Zeichen vor dem abschließenden Null\-Byte (\(aq\e0\(aq) sowie (als XSI\-Erweiterung) \fId_ino\fP. Die anderen Felder sind nicht standardisiert und nicht auf allen Systemen vorhanden; siehe die folgenden ANMERKUNGEN für einige weitere Details. .PP Die von \fBreaddir\fP() zurückgegebenen Daten können bei nachfolgenden Aufrufen von \fBreaddir\fP() für den gleichen Verzeichnis\-Stream überschrieben werden. Die Funktion \fBreaddir_r\fP() ist eine ablaufinvariante Version von \fBreaddir\fP(). Sie liest den nächsten Verzeichniseintrag aus dem Verzeichnis\-Stream \fIdirp\fP und gibt diesen in den vom aufrufenden Prozess bereitgestellten Puffer, auf den \fIentry\fP weist, zurück. (Siehe ANMERKUNGEN für Informationen über die Bereitstellung dieses Puffers.) Ein Zeiger auf den zurückgegebenen Eintrag wird in \fI*result\fP platziert; falls das Ende der Verzeichnis\-Streams erreicht wurde, wird stattdessen NULL in \fI*result\fP zurückgegeben. .SH RÜCKGABEWERT Nach erfolgreichem Abschluss gibt \fBreaddir\fP() einen Zeiger auf eine \fIdirent\fP\-Struktur zurück. (Diese Struktur kann statisch bereitgestellt worden sein; versuchen Sie nicht, den Speicher mittels \fBfree\fP(3) freizugeben.) Falls das Ende des Verzeichnis\-Streams erreicht wird, ist der Rückgabewert NULL und \fIerrno\fP wird nicht geändert. Wenn ein Fehler eintritt, wird NULL zurückgegeben und \fIerrno\fP wird entsprechend gesetzt. Bei Erfolg gibt die Funktion \fBreaddir_r\fP() 0 zurück; im Fehlerfall eine positive Fehlernummer (aufgelistet unter ERRORS). Wenn das Ende des Verzeichnis\-Streams erreicht wird, gibt \fBreaddir_r\fP() 0 zurück, der Rückgabewert von \fI*result\fP ist dann NULL. .SH FEHLER .TP \fBEBADF\fP Unzulässiger Deskriptor für den Verzeichnis\-Stream \fIdirp\fP. .SH ATTRIBUTE .SS "Multithreading (siehe pthreads(7))" Die Funktion \fBreaddir\fP() ist nicht multithread\-fähig. .LP Die Funktion \fBreaddir_r\fP() ist multithread\-fähig. .SH "KONFORM ZU" SVr4, 4.3BSD, POSIX.1\-2001. .SH ANMERKUNGEN Von POSIX.1\-2001 werden nur die Felder \fId_name\fP und \fId_ino\fP 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 \fB_DIRENT_HAVE_D_NAMLEN\fP, \fB_DIRENT_HAVE_D_RECLEN\fP, \fB_DIRENT_HAVE_D_OFF\fP oder \fB_DIRENT_HAVE_D_TYPE\fP definiert sind. .\" https://lwn.net/Articles/544298/ Der in \fId_off\fP zurückgegebene Wert ist der gleiche, als wenn \fBtelldir\fP(3) an der aktuellen Position im Verzeichnis\-Datenstrom aufgerufen werden würde. Beachten Sie, dass ungeachtet des Typs und Namens das \fId_off\fP\-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 \fBtelldir\fP(3). Das Feld \fId_type\fP 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 \fBlstat\fP(2) zu vermeiden, wenn weitere Aktionen von der Art der Datei abhängen. Wenn das Feature\-Test\-Makro \fB_BSD_SOURCE\fP definiert ist, definiert Glibc die folgenden Makro\-Konstanten für den Rückgabewert von \fId_type\fP: .TP 12 \fBDT_BLK\fP Dies ist ein blockorientiertes Gerät. .TP \fBDT_CHR\fP Dies ist ein zeichenorientiertes Gerät. .TP \fBDT_DIR\fP Dies ist ein Verzeichnis. .TP \fBDT_FIFO\fP Dies ist ein FIFO (eine benannte Pipe). .TP \fBDT_LNK\fP Dies ist ein symbolischer Link. .TP \fBDT_REG\fP Dies ist eine reguläre Datei. .TP \fBDT_SOCK\fP Dies ist ein UNIX Domain Socket. .TP \fBDT_UNKNOWN\fP .\" The glibc manual says that on some systems this is the only .\" value returned Der Dateityp ist unbekannt. .PP Wenn der Dateityp nicht bestimmt werden konnte, wird in \fId_type\fP der Wert \fBDT_UNKNOWN\fP zurückgegeben. .\" kernel 2.6.27 .\" The same sentence is in getdents.2 Derzeit unterstützen nur ein paar Dateisysteme (darunter Btrfs, ext2, ext3 und ext4) die Rückgabe des Dateityps in \fId_type\fP vollständig. Alle Anwendungen müssen mit dem Rückgabewert \fBDT_UNKNOWN\fP umgehen können. Da POSIX.1 die Größe des Feldes \fId_name\fP nicht festlegt und weitere nicht standardisierte Felder diesem Feld innerhalb der \fIdirent\fP\-Struktur vorausgehen können, sollten portable Anwendungen, die \fBreaddir_r\fP () verwenden, den Puffer, dessen Adresse in \fIentry\fP übergeben wird, wie folgt bereitstellen: .in +4n .nf 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); .fi .in (POSIX.1 fordert, dass \fId_name\fP das letzte Feld in \fIstruct dirent\fP ist.) .SH "SIEHE AUCH" \fBgetdents\fP(2), \fBread\fP(2), \fBclosedir\fP(3), \fBdirfd\fP(3), \fBftw\fP(3), \fBoffsetof\fP(3), \fBopendir\fP(3), \fBrewinddir\fP(3), \fBscandir\fP(3), \fBseekdir\fP(3), \fBtelldir\fP(3) .SH KOLOPHON Diese Seite ist Teil der Veröffentlichung 3.74 des Projekts Linux\-\fIman\-pages\fP. 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/. .SH ÜBERSETZUNG Die deutsche Übersetzung dieser Handbuchseite wurde von Markus Kaufmann , Helge Kreutzmann und Martin Eberhard Schauer 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 .