Man page - getgrent_r(3)

Packages contains this manual

Available languages:

en fr ja ru ro

Manual

getgrent_r

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

NOM

getgrent_r, fgetgrent_r - Obtenir un enregistrement du fichier de groupes de maniÚre réentrante

BIBLIOTHÈQUE

BibliothĂšque C standard ( libc , -lc )

SYNOPSIS

#include <grp.h>

int getgrent_r(struct group *restrict tampon_groupe ,
char
tampon [restrict . taille_tampon ], size_t taille_tampon ,
struct group **restrict
pointeur_tampon_groupe );
int fgetgrent_r(FILE *restrict
flux , struct group *restrict tampon_groupe ,
char
tampon [restrict . taille_tampon ], size_t taille_tampon ,
struct group **restrict
pointeur_tampon_groupe );

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

getgrent_r () :
_GNU_SOURCE

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

DESCRIPTION

Les fonctions getgrent_r () et fgetgrent_r () sont les versions rĂ©entrantes des fonctions getgrent (3) et fgetgrent (3). La premiĂšre lit l’enregistrement de groupe suivant Ă  partir du flux initialisĂ© par setgrent (3). La seconde lit l’enregistrement de groupe suivant Ă  partir du flux .

La structure group est définie dans <grp.h> comme ceci :

struct group {
char *gr_name; /* nom de groupe */
char *gr_passwd; /* mot de passe de groupe */
gid_t gr_gid; /* identifiant de groupe */
char **gr_mem; /* tableau de pointeurs de nom des membres de groupe
terminé par un pointeur NULL */
};

Pour plus d’informations à propos des champs de cette structure, consultez group (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 et les membres du groupe. 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_groupe qui peut contenir une structure group , puis le tampon tampon de taille taille_tampon qui peut contenir des chaĂźnes supplĂ©mentaires. Le rĂ©sultat de ces fonctions, la structure group lue dans le flux, est enregistrĂ© dans le tampon *tampon_groupe fourni, et un pointeur vers cette structure group est renvoyĂ© dans *pointeur_tampon_groupe .

VALEUR RENVOYÉE

Si elles rĂ©ussissent, ces fonctions renvoient 0 et *pointeur_tampon_groupe est un pointeur vers la structure group . Si elles Ă©chouent, ces fonctions renvoient une valeur d’erreur et *pointeur_tampon_groupe est NULL.

ERREURS

ENOENT

Il n’y a plus d’entrĂ©es.

ERANGE

L’espace tampon fourni est insuffisant. Veuillez essayer à nouveau avec un tampon plus grand.

ATTRIBUTS

Pour une explication des termes utilisés dans cette section, consulter attributes (7).

Image grohtml-3879685-1.png

Dans la table ci-dessus, grent dans race:grent signifie que si des fonctions parmi setgrent (3), getgrent (3), endgrent (3) ou getgrent_r () sont utilisĂ©es en parallĂšle dans diffĂ©rents threads d’un programme, des situations de compĂ©tition de donnĂ©es pourraient se produire.

VERSIONS

D’autres systùmes utilisent le prototype

struct group *getgrent_r(struct group *grp, char *tampon,
int taille_tampon);

ou mieux,

int getgrent_r(struct group *grp, char *tampon, int taille_tampon,
FILE **gr_fp);

STANDARDS

GNU.

HISTORIQUE

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

NOTES

La fonction getgrent_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 <grp.h>
#include <stdint.h>
#include <stdio.h>
#include <stdlib.h>
#define BUFLEN 4096
int
main(void)
{
struct group grp;
struct group *grpp;
char buf[BUFLEN];
int i;
setgrent();
while (1) {
i = getgrent_r(&grp, buf, sizeof(buf), &grpp);
if (i)
break;
printf("%s (%jd):", grpp->gr_name, (intmax_t) grpp->gr_gid);
for (size_t j = 0; ; j++) {
if (grpp->gr_mem[j] == NULL)
break;
printf(" %s", grpp->gr_mem[j]);
}
printf("\n");
}
endgrent();
exit(EXIT_SUCCESS);
}

VOIR AUSSI

fgetgrent (3), getgrent (3), getgrgid (3), getgrnam (3), putgrent (3), group (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 .