Provided by: manpages-fr-dev_4.27.0-1_all bug

NOM

       getpwent_r, fgetpwent_r – Obtenir un enregistrement du fichier passwd de manière réentrante

BIBLIOTHÈQUE

       Bibliothèque C standard (libc, -lc)

SYNOPSIS

       #include <pwd.h>

       int getpwent_r(struct passwd *restrict tampon_pw,
                      char tampon[restrict .taille_tampon], size_t taille_tampon,
                      struct passwd **restrict pointeur_tampon_pw);
       int fgetpwent_r(FILE *restrict flux, struct passwd *restrict tampon_pw,
                      char buf[restrict .taille_tampon], size_t taille_tampon,
                      struct passwd **restrict pointeur_tampon_pw);

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

       getpwent_r() :
           Depuis la glibc 2.19 :
               _DEFAULT_SOURCE
           glibc 2.19 et antérieures :
               _BSD_SOURCE || _SVID_SOURCE

       fgetpwent_r() :
           Depuis la glibc 2.19 :
               _POSIX_C_SOURCE >= 200809L
           glibc 2.19 et antérieures :
               _ATFILE_SOURCE

DESCRIPTION

       Les  fonctions  getpwent_r()  et fgetpwent_r() sont les versions réentrantes des fonctions getpwent(3) et
       fgetpwent(3).  La  première  lit  l'enregistrement  passwd  suivant  à  partir  du  flux  initialisé  par
       setpwent(3). La seconde lit l'enregistrement passwd suivant à partir du flux flux.

       La structure passwd est définie dans <pwd.h> comme ceci :

           struct passwd {
               char    *pw_name;      /* Nom d'utilisateur */
               char    *pw_passwd;    /* Mot de passe de l'utilisateur */
               uid_t    pw_uid;       /* ID de l'utilisateur */
               gid_t    pw_gid;       /* ID du groupe */
               char    *pw_gecos;     /* Information utilisateur */
               char    *pw_dir;       /* Répertoire personnel */
               char    *pw_shell;     /* Interpréteur de commande */
           };

       Pour plus d'informations à propos des champs de cette structure, consultez passwd(5).

       Les  fonctions  non  réentrantes  renvoient un pointeur sur une zone statique, zone qui contient d'autres
       pointeurs vers le nom, le mot de passe, le champ gecos, le  répertoire  personnel  et  l'interpréteur  de
       commandes  de  l'utilisateur. Les fonctions réentrantes décrites ici renvoient tout cela dans des tampons
       fournis par l'appelant. Il y a tout d'abord le tampon tampon_pw qui contient une structure  passwd,  puis
       le  tampon  tampon  de taille taille_tampon qui peut contenir des chaînes supplémentaires. Le résultat de
       ces fonctions, la structure passwd lue dans le flux, est enregistré dans le tampon *tampon_pw fourni,  et
       un pointeur vers cette structure passwd est renvoyé dans *pointeur_tampon_pw.

VALEUR RENVOYÉE

       Si  elles réussissent, ces fonctions renvoient 0 et *pointeur_tampon_pw est un pointeur vers la structure
       passwd. Si elles échouent, ces fonctions renvoient une valeur d'erreur et *pointeur_tampon_pw est NULL.

ERREURS

       ENOENT Il n'y a plus d'entrées.

       ERANGE La taille du tampon fourni est insuffisante. Veuillez essayer à nouveau avec un tampon plus grand.

ATTRIBUTS

       Pour une explication des termes utilisés dans cette section, consulter attributes(7).
       ┌───────────────┬──────────────────────┬────────────────────────────────────────────────────────────────┐
       │ InterfaceAttributValeur                                                         │
       ├───────────────┼──────────────────────┼────────────────────────────────────────────────────────────────┤
       │ getpwent_r()  │ Sécurité des threads │ MT-Unsafe race:pwent locale                                    │
       ├───────────────┼──────────────────────┼────────────────────────────────────────────────────────────────┤
       │ fgetpwent_r() │ Sécurité des threads │ MT-Safe                                                        │
       └───────────────┴──────────────────────┴────────────────────────────────────────────────────────────────┘

       Dans la table ci-dessus, pwent dans race:pwent signifie que si une des fonctions setpwent(),  getpwent(),
       endpwent()  ou  getpwent_r()  est  utilisée  en  parallèle  dans  différents  threads d'un programme, des
       situations de compétition entre données peuvent apparaître.

VERSIONS

       D'autres systèmes utilisent le prototype

           struct passwd *
           getpwent_r(struct passwd *pwd, char *tampon, int taille_tampon);

       ou mieux

           int
           getpwent_r(struct passwd *pwd, char *tampon, int taille_tampon,
                      FILE **pw_fp);

STANDARDS

       Aucun.

HISTORIQUE

       Ces fonctions sont  effectuées  dans  un  style  ressemblant  à  la  version  POSIX  de  fonctions  comme
       getpwnam_r(3).

NOTES

       La fonction getpwent_r() n'est pas vraiment réentrante puisqu'elle partage la position de lecture dans le
       flux avec tous les autres threads.

EXEMPLES

       #define _GNU_SOURCE
       #include <pwd.h>
       #include <stdint.h>
       #include <stdio.h>
       #include <stdlib.h>

       #define BUFLEN 4096

       int
       main(void)
       {
           struct passwd pw;
           struct passwd *pwp;
           char buf[BUFLEN];
           int i;

           setpwent();
           while (1) {
               i = getpwent_r(&pw, buf, sizeof(buf), &pwp);
               if (i)
                   break;
               printf("%s (%jd)\tHOME %s\tSHELL %s\n", pwp->pw_name,
                      (intmax_t) pwp->pw_uid, pwp->pw_dir, pwp->pw_shell);
           }
           endpwent();
           exit(EXIT_SUCCESS);
       }

VOIR AUSSI

       fgetpwent(3), getpw(3), getpwent(3), getpwnam(3), getpwuid(3), putpwent(3), passwd(5)

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 Lucien Gentis <lucien.gentis@waika9.com>

       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                    15 juin 2024                                     getpwent_r(3)