Provided by: manpages-fr-dev_4.27.0-1_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 entre 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 systmes sur lesquels NAME_MAX n'est pas défini, 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 entres 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 actuelle (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 diffrents  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-2008.

HISTORIQUE

       POSIX.1-2001.

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
       <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 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.

Pages du manuel de Linux 6.9.1                     2 mai 2024                                       readdir_r(3)