readdir_r
Table des matières
Retour à l'index
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).
| Interface | Attribut | Valeur
|
|
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 à
Index
- NOM
-
- BIBLIOTHÈQUE
-
- SYNOPSIS
-
- DESCRIPTION
-
- VALEUR RENVOYÉE
-
- ERREURS
-
- ATTRIBUTS
-
- STANDARDS
-
- HISTORIQUE
-
- VOIR AUSSI
-
- TRADUCTION
-
This document was created by
man2html,
using the manual pages.
Time: 05:06:23 GMT, September 19, 2025