.\" -*- 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 "20. Juli 2023" "Linux man\-pages 6.05.01" .SH BEZEICHNUNG readdir \- liest ein Verzeichnis .SH BIBLIOTHEK Standard\-C\-Bibliothek (\fIlibc\fP, \fI\-lc\fP) .SH ÜBERSICHT .nf \fB#include \fP .PP \fBstruct dirent *readdir(DIR *\fP\fIVerzz\fP\fB);\fP .fi .SH BESCHREIBUNG Die Funktion \fBreaddir\fP() liefert einen Zeiger auf eine \fIdirent\fP\-Struktur zurück, welche den nächsten Eintrag in dem Verzeichnis\-Stream darstellt, auf das \fIVerzz\fP weist. Falls das Dateiende erreicht wurde oder ein Fehler auftrat, wird NULL zurückgegeben. .PP In der Glibc\-Implementierung ist die Struktur \fIdirent\fP wie folgt definiert: .PP .in +4n .EX 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]; /* Mit Nullbyte abgeschlossener Dateiname */ }; .EE .in .PP POSIX.1 fordert in der \fIdirent\fP\-Struktur lediglich die Felder \fId_name\fP und \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 Felder der Struktur \fIdirent\fP sind wie folgt definiert: .TP \fId_ino\fP Dies ist die Inode\-Nummer der Datei. .TP \fId_off\fP .\" 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\-Stream 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). .TP \fId_reclen\fP Dies ist die Größe (in Bytes) des zurückgelieferten Datensatzes. Dies könnte auf die Größe der oben gezeigten Strukturdefinition nicht passen; siehe ANMERKUNGEN. .TP \fId_type\fP Dieses Feld enthält einen Wert, der den Dateityp anzeigt und es damit ermöglicht, die Kosten für den Aufruf von \fBlstat\fP(2) zu vermeiden, falls weitere Aktionen von dem Dateityp abhängen. .IP Falls ein geeignetes Feature\-Test\-Makro (\fB_DEFAULT_SOURCE\fP unter Glibc\-Versionen seit 2.19 oder \fB_BSD_SOURCE\fP unter Glibc\-Versionen 2.19 und älter) definiert ist, definiert Glibc die folgenden Makrokonstanten für den in \fId_type\fP zurückgelieferten Wert: .RS .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 Der Dateityp konnte nicht ermittelt werden. .RE .IP .\" 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. .TP \fId_name\fP Dieses Feld enthält den mit einem Nullbyte abgeschlossenen Dateinamen. \fISiehe ANMERKUNGEN\fP. .PP Die von \fBreaddir\fP() zurückgegebenen Daten können bei nachfolgenden Aufrufen von \fBreaddir\fP() für den gleichen Verzeichnis\-Stream überschrieben werden. .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.) .PP 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 gesetzt, um den Fehler anzuzeigen. Um das Ende des Streams von einem Fehler zu unterscheiden, setzen Sie vor dem Aufruf von \fBreaddir\fP() \fIerrno\fP auf Null und prüfen dann den Wert von \fIerrno\fP, falls NULL zurückgeliefert wurde. .SH FEHLER .TP \fBEBADF\fP Unzulässiger Deskriptor für den Verzeichnis\-Stream \fIVerzz\fP. .SH ATTRIBUTE Siehe \fBattributes\fP(7) für eine Erläuterung der in diesem Abschnitt verwandten Ausdrücke. .TS allbox; lbx lb lb l l l. Schnittstelle Attribut Wert T{ .na .nh \fBreaddir\fP() T} Multithread\-Fähigkeit MT\-Unsicher race:dirstream .TE .sp 1 .PP .\" FIXME . .\" http://www.austingroupbugs.net/view.php?id=696 In der aktuellen POSIX.1\-Spezifikation (POSIX.1\-2008) muss \fBreaddir\fP() nicht Thread\-sicher sein. Bei modernen Implementierungen (einschließlich der Glibc\-Implementierung) sind gleichzeitige Aufrufe von \fBreaddir\fP(), die verschiedene Verzeichnis\-Streams festlegen, Thread\-sicher. In Fällen, in denen mehrere Threads vom gleichen Verzeichnis\-Stream lesen müssen, wird die Verwendung von \fBreaddir\fP() mit externere Synchronisation immer noch der Verwendung der veralteten Funtion \fBreaddir_r\fP(3) vorgezogen. Es wird erwartet, dass zukünftige Versionen von POSIX.1 verlangen werden, dass \fBreaddir\fP() Thread\-sicher ist, wenn es parallel auf verschiedene Verzeichnis\-Streams angewandt wird. .SH VERSIONEN .\" POSIX.1-2001, POSIX.1-2008 .\" Von POSIX.1 werden nur die Felder \fId_name\fP und (als XSI\-Erweiterung) \fId_ino\fP beschrieben. Neben Linux ist das Feld \fId_type\fP hauptsächlich auf BSD\-Systemen verfügbar. 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. .SS "Das Feld d_name" Die oben gezeigte Strukturdefinition \fIdirent\fP stammt aus den Glibc\-Headern und zeigt das Feld \fId_name\fP mit einer festen Größe. .PP \fIWarnung\fP: Anwendungen sollten Abhängigkeiten von der Größe des Feldes \fId_name\fP vermeiden. POSIX definiert es als \fIchar\ d_name[]\fP, ein Zeichenfeld von unbestimmter Größe, mit höchstens \fBNAME_MAX\fP Zeichen vor dem abschließenden Nullbyte (»\e0«). .PP POSIX.1 bemerkt explizit, dass dieses Feld nicht als Lvalue verwandt werden soll. Der Standard merkt auch an, dass die Verwendung von \fIsizeof(d_name)\fP nicht korrekt ist; verwenden Sie stattdessen \fIstrlen(d_name)\fP. (Auf einigen Systemen ist dieses Feld als \fIchar\~d_name[1]\fP definiert!) Daraus ergibt sich, dass die Verwendung von \fIsizeof(struct dirent)\fP zur Ermittlung der Größe des Datensatzes einschließlich der Größe von \fId_name\fP auch nicht korrekt ist. .PP Beachten Sie, dass obwohl der Aufruf .PP .in +4n .EX fpathconf(fd, _PC_NAME_MAX) .EE .in .PP für die meisten Dateisysteme den Wert 255 zurückliefert, auf einigen Dateisystemen (z.B. CIFS und Windows\-SMB\-Servern) der mit einem Nullbyte abgeschlossene Dateiname, der (korrekterweise) in \fId_name\fP zurückgeliefert wird, diese Größe tatsächlich überschreiten kann. In diesen Fällen wird das Feld \fId_reclen\fP einen Wert enthalten, der die Größe der oben gezeigten Glibc\-Struktur \fIdirent\fP überschreitet. .SH STANDARDS POSIX.1\-2008. .SH GESCHICHTE POSIX.1\-2001, SVr4, 4.3BSD. .SH ANMERKUNGEN Ein Verzeichnis\-Stream wurde mittels \fBopendir\fP(3) geöffnet. .PP Die Reihenfolge, in der Dateinamen durch sukzessive Aufrufe von \fBreaddir\fP() gelesen werden, hängt von der Dateisystemimplementierung ab; es ist daher unwahrscheinlich, dass die Namen in irgendeiner Weise sortiert sein werden. .SH "SIEHE AUCH" \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 ÜBERSETZUNG Die deutsche Übersetzung dieser Handbuchseite wurde von Markus Kaufmann , Martin Eberhard Schauer , Helge Kreutzmann und Mario Blättermann erstellt. .PP Diese Übersetzung ist Freie Dokumentation; lesen Sie die .UR https://www.gnu.org/licenses/gpl-3.0.html GNU General Public License Version 3 .UE oder neuer bezüglich der Copyright-Bedingungen. Es wird KEINE HAFTUNG übernommen. .PP Wenn Sie Fehler in der Übersetzung dieser Handbuchseite finden, schicken Sie bitte eine E-Mail an die .MT debian-l10n-german@lists.debian.org Mailingliste der Übersetzer .ME .