Man page - getpwent_r(3)

Packages contains this manual

Available languages:

en fr ja ru ro

Manual

getpwent_r

NOM
BIBLIOTHÈQUE
SYNOPSIS
DESCRIPTION
VALEUR RENVOYÉE
ERREURS
ATTRIBUTS
VERSIONS
STANDARDS
HISTORIQUE
NOTES
EXEMPLES
VOIR AUSSI
TRADUCTION

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

Image grohtml-3884200-1.png

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 .