getdents(2) getdents(2)
NAME
getdents - Dateiverzeichnis-Einträge umwandeln
SYNTAX
#include <sys/dirent.h>
int getdents(int fildes, struct dirent *buf, sizet nbyte);
BESCHREIBUNG
fildes ist ein Dateideskriptor, der von einem open(2)- oder dup(2)-
Systemaufruf geliefert wird.
getdents() versucht, nbyte Bytes aus dem zu fildes gehörenden Datei-
verzeichnis zu lesen und diese als vom Dateisystem unabhängige
Dateiverzeichnis-Einträge in den Puffer zu bringen, auf den buf zeigt.
Da die vom Dateisystem unabhängigen Dateiverzeichnis-Einträge unter-
schiedlich lang sind, ist die tatsächliche Anzahl zurückgegebener
Bytes in den meisten Fällen wesentlich kleiner als nbyte. Sehen Sie in
dirent(4) nach, um die Anzahl der Bytes zu berechnen.
Der dateisystemunabhängige Dateiverzeichnis-Eintrag wird durch die
Struktur dirent angegeben. Eine Beschreibung hiervon ist in dirent(4)
zu finden.
Bei Geräten, die positionieren können, beginnt getdents() an der
Stelle in der Datei, die durch den fildes zugeordneten Schreib-
/Lesezeiger angegeben wird. Nach Rückkehr von getdents() wird der
Schreib-/Lesezeiger erhöht, damit er auf den nächsten
Dateiverzeichnis-Eintrag zeigt.
Dieser Systemaufruf wurde für die Implementierung der Funktion read-
dir() entwickelt (eine Beschreibung ist in directory(3C) zu finden)
und sollte daher nicht für andere Zwecke verwendet werden.
getdents() ist erfolglos, wenn einer oder mehrere der nachstehenden
Punkte zutreffen:
EBADF fildes ist kein zum Lesen geöffneter, gültiger Dateide-
skriptor.
EFAULT buf weist über den zugewiesenen Adreßraum hinaus.
EINVAL nbyte ist für einen Dateiverzeichnis-Eintrag nicht groß
genug.
ENOENT Der aktuelle Schreib-/Lesezeiger für das Dateiverzeichnis
befindet sich nicht auf einem gültigen Eintrag.
Seite 1 Reliant UNIX 5.44 Gedruckt 11/98
getdents(2) getdents(2)
ENOLINK fildes weist auf einen fernen Rechner, und die Verbindung
zu diesem Rechner ist nicht mehr aktiv.
ENOTDIR fildes ist kein Dateiverzeichnis.
EIO Während des Zugriffs auf das Dateisystem ist ein E/A-Fehler
aufgetreten.
ERGEBNIS
Nach erfolgreicher Beendigung wird eine nicht negative ganze Zahl
zurückgegeben, die die Anzahl der tatsächlich gelesenen Bytes angibt.
Der Wert 0 zeigt an, daß das Ende des Dateiverzeichnisses erreicht
wurde. War der Systemaufruf erfolglos, wird -1 zurückgegeben und errno
zur Anzeige des Fehlers gesetzt.
SIEHE AUCH
directory(3C), dirent(4).
Seite 2 Reliant UNIX 5.44 Gedruckt 11/98