Provided by: manpages-fr-dev_4.19.0-7_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 <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⟩.