getgrouplist   Début   Suivant   Sommaire   Préc.page.lue   Accueil
Section: Manuel du programmeur Linux (3)
Updated: 26 juillet 2007
Sommaire  



NOM   Début   Précédent   Suivant   Sommaire   Préc.page.lue   Accueil
getgrouplist - Lister les groupes auquels appartient un utilisateur  



SYNOPSIS   Début   Précédent   Suivant   Sommaire   Préc.page.lue   Accueil
#include <grp.h>

int getgrouplist(const char *user, gid_t group,
gid_t *groups, int *ngroups);

Exigences de macros de test de fonctionalités pour la glibc (voir feature_test_macros(7)) :

getgrouplist() : _BSD_SOURCE  




DESCRIPTION   Début   Précédent   Suivant   Sommaire   Préc.page.lue   Accueil
La fonction getgrouplist() balaie la base de données group à la recherche de tous les groupes auquels user appartient. *ngroups identifiants de groupe correspondant à ces groupes sont enregistrés dans le tableau groups ; la valeur de retour de la fonction est le nombre de GID actuellement enregistrés. Le groupe group est automatiquement inclus dans la liste des groupes renvoyée par getgrouplist().  



VALEUR RENVOYÉE   Début   Précédent   Suivant   Sommaire   Préc.page.lue   Accueil
Si *ngroups est plus petit que le nombre total de groupes trouvés, getgrouplist() renvoie -1. Dans tous les cas, le nombre actuel de groupes est enregistré dans *ngroups.  



VERSIONS   Début   Précédent   Suivant   Sommaire   Préc.page.lue   Accueil
Cette fonction est présente depuis glibc 2.2.4.  



CONFORMITÉ   Début   Précédent   Suivant   Sommaire   Préc.page.lue   Accueil
Cette fonction n'est pas standard ; elle apparait sur la plupart des BSD.  



BOGUES   Début   Précédent   Suivant   Sommaire   Préc.page.lue   Accueil
L'implémentation de cette fonction dans la glibc 2.3.2 est défectueuse : elle écrase la mémoire lorsque le nombre actuel de groupes est plus grand que *ngroups.  



EXEMPLE   Début   Précédent   Suivant   Sommaire   Préc.page.lue   Accueil
/* Ceci plante avec la glibc 2.3.2 */
#include <stdio.h>
#include <stdlib.h>
#include <grp.h>
#include <pwd.h>

int
main(void)
{
    int i, ng = 0;
    char *user = "who"; /* nom d'utilisateur ici */
    gid_t *groups = NULL;
    struct passwd *pw = getpwnam(user);
    if (pw == NULL)
        exit(EXIT_SUCCESS);

    if (getgrouplist(user, pw->pw_gid, NULL, &ng) < 0) {
        groups = (gid_t *) malloc(ng * sizeof (gid_t));
        getgrouplist(user, pw->pw_gid, groups, &ng);
    }

    for (i = 0; i < ng; i++)
        printf("%d\n", groups[i]);

    exit(EXIT_SUCCESS);
}
 



VOIR AUSSI   Début   Précédent   Suivant   Sommaire   Préc.page.lue   Accueil
getgroups(2), setgroups(2)  



TRADUCTION   Début   Précédent   Suivant   Sommaire   Préc.page.lue   Accueil

Ce document est une traduction réalisée par Alain Portal <aportal AT univ-montp2 DOT fr> le 20 juillet 2005 et révisée le 8 janvier 2008.

L'équipe de traduction a fait le maximum pour réaliser une adaptation française de qualité. La version anglaise la plus à jour de ce document est toujours consultable via la commande : « LANG=C man 3 getgrouplist ». N'hésitez pas à signaler à l'auteur ou au traducteur, selon le cas, toute erreur dans cette page de manuel.


 



Sommaire   Début   Suivant   Sommaire   Préc.page.lue   Accueil
NOM
SYNOPSIS
DESCRIPTION
VALEUR RENVOYÉE
VERSIONS
CONFORMITÉ
BOGUES
EXEMPLE
VOIR AUSSI
TRADUCTION

Ce document a été créé par man2html suivi de man2html.pl, le 17/10/2008 17:50:15, en utilisant les pages de 'man'.
 

Valid HTML 4.01 Transitional