READDIR(3)

NOM
readdir - Consulter un répertoire

SYNOPSIS
#include <sys/types.h>

#include <dirent.h>

struct dirent * readdir (DIR * dir);

DESCRIPTION
La fonction readdir() renvoie un pointeur sur une structure dirent représentant l'entrée suivante du flux répertoire pointé par dir. Elle renvoie NULL à la fin du répertoire, ou en cas d'erreur.

Sous Linux, la structure dirent est définie de la façon suivante :

    struct dirent {
        ino_t          d_ino;       /* numéro d'i-noeud */
        off_t          d_off;       /* offset jusqu'à la dirent suivante */
        unsigned short d_reclen;    /* longueur de cet enregistrement */
        unsigned char  d_type;      /* type de file */
        char           d_name[256]; /* nom du fichier */
    };

D'après POSIX, la structure dirent contient un champ char d_name[] de taille non spécifiée, avec au plus NAME_MAX caractères avant l'octet nul final. POSIX.1-2001 documente aussi le champ ino_t d_ino comme une extension XSI. Les autres champs ne sont pas normalisés et ne sont pas présents sur tous les systèmes ; voir NOTES plus loin pour plus de détails.

Les données renvoyées par readdir() sont écrasées lors de l'appel suivant à readdir() sur le même flux répertoire.

VALEUR RENVOYÉE
La fonction readdir() renvoie un pointeur sur une structure dirent, ou NULL lorsqu'une erreur se produit, ou lorsque la fin du répertoire est atteinte. Si une erreur survient, errno contient le code de l'erreur.

ERREURS

EBADF
    Le flux répertoire dir est invalide.

NOTES
Seuls les champs d_name et d_ino sont spécifiés par POSIX.1-2001. Les champs restants sont disponibles sur beaucoup, mais pas tous les systèmes. Avec la glibc, les programmes peuvent vérifier la disponibilité des champs non définis par POSIX.1 en testant si les macros _DIRENT_HAVE_D_NAMLEN, _DIRENT_HAVE_D_RECLEN, _DIRENT_HAVE_D_OFF ou _DIRENT_HAVE_D_TYPE sont définies. Ailleurs que sous Linux, le champ d_type n'est principalement disponible que sur les systèmes BSD. Ce champ rend possible d'éviter la dépense de l'appel stat() si d'autres actions dépendent du type de fichier. Si la macro de test de fonctionalité _BSD_SOURCE est définie, la glibc définit les constantes suivantes pour la valeur renvoyée dans d_type :

DT_UNKNOWN
    Le type de fichier est inconnu.

DT_REG
    C'est un fichier régulier.

DT_DIR
    C'est un répertoire.

DT_FIFO
    C'est un tube nommé ou une FIFO.

DT_SOCK
    C'est une socket de domaine Unix.

DT_CHR
    C'est un périphérique de caractères.

DT_BLK
    C'est un périphérique de blocs.

Si le type de fichier ne peut pas être déterminé, la valeur DT_UNKNOWN est renvoyée dans d_type.

CONFORMITÉ
SVr4, BSD 4.3, POSIX.1-2001.

VOIR AUSSI
read(2), closedir(3), dirfd(3), ftw(3), opendir(3), rewinddir(3), scandir(3), seekdir(3), telldir(3), feature_test_macros(7)

TRADUCTION

Ce document est une traduction réalisée par Christophe Blaess <http://www.blaess.fr/christophe/> le 5 novembre 1996 et révisée le 22 décembre 2007.

L'équipe de traduction a fait le maximum pour réaliser une adaptation française de qualité. La version anglaise la plus à jour de ce document est toujours consultable via la commande : « LANG=C man 3 readdir ». N'hésitez pas à signaler à l'auteur ou au traducteur, selon le cas, toute erreur dans cette page de manuel.