Provided by: manpages-fr-dev_4.13-4_all bug

NOM

       readdir_r - Consulter un répertoire

SYNOPSIS

       #include <dirent.h>

       int readdir_r(DIR *dirp, struct dirent *entry, struct dirent **result);

   Exigences de macros de test de fonctionnalités pour la glibc (consulter feature_test_macros(7)) :

       readdir_r() :
           _POSIX_C_SOURCE
               || /* Versions de la Glibc <= 2.19: */ _BSD_SOURCE || _SVID_SOURCE

DESCRIPTION

       Cette fonction est obsolète ; utilisez readdir(3) à la place.

       La  fonction  readdir_r()  est  la  version  réentrante  de  readdir(3).  Elle lit la prochaine entrée de
       répertoire à partir du flux répertoire dirp et la renvoie dans le tampon de l'appelant pointé par  entry.
       Pour des détails sur la structure dirent, consultez readdir(3).

       Un  pointeur  vers  le  tampon  renvoyé  est  placé  dans  *result ;  si la fin du flux de répertoire est
       rencontrée, NULL est renvoyé dans *result.

       Il est recommandé que les applications utilisent readdir(3) à la place de readdir_r(). De plus, depuis la
       version 2.24, la glibc rend readdir_r() obsolète pour les raisons suivantes :

       –  Pour les systèmes sur lesquels NAME_MAX n'est pas définit, appeler readdir_r() peut être non sûr parce
          que l'interface ne permet pas à l'appelant de fournir la longueur du tampon utilisé pour  l'entrée  de
          répertoire renvoyée.

       –  Sur  certains  systèmes,  readdir_r()  ne peut pas lire les entrées de répertoire dont le nom est très
          long. Lorsque l'implémentation de la glibc rencontre un tel  nom,  readdir_r()  échoue  avec  l'erreur
          ENAMETOOLONG  après  que  la  dernière  entrée  du  répertoire  ait  été  lue.  Sur d'autres systèmes,
          readdir_r() peut renvoyer un état de réussite mais le champ d_name renvoyé peut ne  pas  être  terminé
          par l'octet NULL ou peut être tronqué.

       –  Dans  la  spécification  POSIX.1  courante (POSIX.1-2008), il n'est pas requis que readdir(3) soit sûr
          vis-à-vis des threads. Cependant, dans les implémentations modernes, incluant  la  glibc,  des  appels
          concurrents  à  readdir(3)  pour  des  flux répertoire différents sont sûrs vis-à-vis des threads. Par
          conséquent, l'utilisation de  readdir_r()  n'est  généralement  pas  nécessaire  dans  les  programmes
          multi-threadés.  Dans le cas où de multiples threads doivent lire depuis un flux répertoire identique,
          l'utilisation de readdir(3) avec une synchronisation externe est toujours préférable  à  l'utilisation
          de readdir_r() pour les raisons citées dans le point ci-dessus.

       –  Il  est attendu qu'une future version de POSIX.1 rende readdir_r() obsolète et requière que readdir(3)
          soit sûre du point de vue des threads lorsqu'elle est  employée  de  façon  simultanée  sur  des  flux
          répertoire différents.

VALEUR RENVOYÉE

       La  fonction readdir_r() renvoie 0 si elle réussit. Si elle échoue, elle renvoie un code d'erreur positif
       (documenté dans ERREURS). Si la fin du flux répertoire est atteinte, readdir_r()  renvoie  0  et  renvoie
       NULL dans *result.

ERREURS

       EBADF  Le descripteur de flux répertoire dirp n'est pas valable.

       ENAMETOOLONG
              Une entrée de répertoire dont le nom est trop long pour être lu a été rencontrée.

ATTRIBUTS

       Pour une explication des termes utilisés dans cette section, consulter attributes(7).

       ┌────────────┬──────────────────────┬─────────┐
       │InterfaceAttributValeur  │
       ├────────────┼──────────────────────┼─────────┤
       │readdir_r() │ Sécurité des threads │ MT-Safe │
       └────────────┴──────────────────────┴─────────┘

CONFORMITÉ

       POSIX.1-2001, POSIX.1-2008.

VOIR AUSSI

       readdir(3)

COLOPHON

       Cette page fait partie de la publication 5.10 du projet man-pages Linux. Une description du projet et des
       instructions pour signaler des anomalies et la dernière version de cette page  peuvent  être  trouvées  à
       l'adresse https://www.kernel.org/doc/man-pages/.

TRADUCTION

       La   traduction   française   de   cette   page   de   manuel   a   été   créée   par  Christophe  Blaess
       <https://www.blaess.fr/christophe/>,   Stéphan   Rafin   <stephan.rafin@laposte.net>,   Thierry   Vignaud
       <tvignaud@mandriva.com>,  François  Micaux,  Alain Portal <aportal@univ-montp2.fr>, Jean-Philippe Guérard
       <fevrier@tigreraye.org>,   Jean-Luc   Coulon   (f5ibh)   <jean-luc.coulon@wanadoo.fr>,   Julien   Cristau
       <jcristau@debian.org>,      Thomas      Huriaux      <thomas.huriaux@gmail.com>,     Nicolas     François
       <nicolas.francois@centraliens.net>,    Florentin    Duneau    <fduneau@gmail.com>,     Simon     Paillard
       <simon.paillard@resel.enst-bretagne.fr>,     Denis    Barbier    <barbier@debian.org>,    David    Prévot
       <david@tilapin.org> et Grégoire Scano <gregoire.scano@malloc.fr>

       Cette traduction est une documentation libre ; veuillez vous reporter à la  GNU  General  Public  License
       version 3   ⟨https://www.gnu.org/licenses/gpl-3.0.html⟩   concernant   les  conditions  de  copie  et  de
       distribution. Il n'y a aucune RESPONSABILITÉ LÉGALE.

       Si vous découvrez un bogue dans la traduction de cette page de manuel,  veuillez  envoyer  un  message  à
       debian-l10n-french@lists.debian.org ⟨⟩.

                                                   1 mars 2016                                      READDIR_R(3)