READDIR(2)

BEZEICHNUNG
readdir - liest einen Verzeichniseintrag

ÜBERSICHT
#include <unistd.h>
#include <linux/dirent.h>
#include <linux/unistd.h>

_syscall3(int, readdir, uint, fd, struct dirent *, dirp, uint, count);

int readdir(unsigned int fd, struct dirent *dirp, unsigned int count);

BESCHREIBUNG
Dies ist nicht die Funktion, an der sie interessiert sind. Unter readdir(3) finden sie eine POSIX-konforme C-Funktion. Diese Seite beschreibt den rohen Kernelsystemaufruf, der sich jederzeit ändern kann und durch getdents(2) ersetzt wurde.

readdir liest eine dirent-Struktur von dem Verzeichnis auf das die Variable fd zeigt in den Speicher an die Stelle auf die dirp zeigt. Der Parameter count wird ignoriert; es wird höchstens eine dirent-Struktur gelesen.

Die dirent-Struktur ist wie folgt deklariert:

    struct dirent
    {
        long d_ino;                 /* inode Nummer */
        off_t d_off;                /* Offset zu diesem dirent */
        unsigned short d_reclen;    /* Länge von d_name */
        char d_name [NAME_MAX+1];   /* Dateiname (Null-terminiert) */
    }

d_ino ist eine Inode-Nummer. d_off is der Abstand zwischen dem Beginn des Verzeichnisses und diesem dirent. d_reclen ist die Länge von d_name, den abschließenden Null-terminator nicht mitgezählt. d_name ist ein Null-terminierter Dateiname.

RÜCKGABEWERT
Bei Erfolg wird eine 1 zurückgeliefert. Beim Ende eines Verzeichnisses wird eine 0 zurückgeliefert. Beim Auftreten eines Fehlers wird -1 zurückgeliefert und errno entsprechend gesetzt.

FEHLER

EBADF
    Ungültiger Dateideskriptor fd.

ENOTDIR
    Dateideskriptor zeigt nicht auf ein Verzeichnis.

KONFORM ZU
Dieser Systemaufruf ist Linuxspezifisch.

SIEHE AUCH
getdents(2), readdir(3).