Provided by: manpages-fr-dev_4.21.0-2_all bug

NOM

       readdir_r - Consulter un répertoire

BIBLIOTHÈQUE

       Bibliothèque C standard (libc, -lc)

SYNOPSIS

       #include <dirent.h>

       [[obsolète]] int readdir_r(DIR *restrict dirp,
                                  struct dirent *restrict entry,
                                  struct dirent **restrict result);

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

       readdir_r() :
           _POSIX_C_SOURCE
               || /* 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
       glibc 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 │
       └──────────────────────────────────────────────────────────────────────┴──────────────────────┴─────────┘

STANDARDS

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

VOIR AUSSI

       readdir(3)

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  <tvi‐
       gnaud@mandriva.com>,  François  Micaux, Alain Portal <aportal@univ-montp2.fr>, Jean-Philippe Guérard <fe‐
       vrier@tigreraye.org>, Jean-Luc Coulon (f5ibh) <jean-luc.coulon@wanadoo.fr>, Julien Cristau  <jcristau@de‐
       bian.org>,   Thomas   Huriaux   <thomas.huriaux@gmail.com>,  Nicolas  François  <nicolas.francois@centra‐
       liens.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.sca‐
       no@malloc.fr>

       Cette  traduction  est  une  documentation libre ; veuillez vous reporter à la GNU General Public License
       version 3 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 à  de‐
       bian-l10n-french@lists.debian.org.

Pages du manuel de Linux 6.03                    5 février 2023                                     readdir_r(3)