IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Linux Discussion :

appel système getgroups


Sujet :

Linux

  1. #1
    Membre averti
    Avatar de exe2bin
    Profil pro
    Passionné de programmation
    Inscrit en
    Mars 2009
    Messages
    537
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Passionné de programmation

    Informations forums :
    Inscription : Mars 2009
    Messages : 537
    Points : 387
    Points
    387
    Billets dans le blog
    3
    Par défaut appel système getgroups
    Bonsoir à tous ,
    l'excelent livre de C.Blaess "Programmation Système en C sous Linux" nous
    invite à tester un petit code affichant les ID de groupes de l'utilisateur :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
     
    #include<stdio.h>
    #include<stdlib.h>
    #include<unistd.h>
    #include<sys/types.h>
    #include<errno.h>
     
    int main(void)
    {
    	gid_t	*table_gid_supp = 0;
    	int	size = 0,i;
     
    	size = getgroups(size,table_gid_supp);// récupère le nb de groupes
    						// supplémentaire
    	if(!size)
    	{
    		fprintf(stdout,"Aucun autre groupe que %u et %u",getgid(),
    				getegid());
    		return 1;
    	}
    	table_gid_supp = calloc(size,sizeof(gid_t));// tableau des groupes supp.
    	if(!table_gid_supp)
    	{
    		fprintf(stderr,"Allocation mémoire refusée ,errno : %d",errno);
    		return 2;
    	}
    	fprintf(stdout,"groupes supplémentaires : ");
    	for(i=0;i<size;i++)
    	{
    		fprintf(stdout,"%u ",table_gid_supp[i]);
    	}
    	printf("\n");
    	free(table_gid_supp);
     
    	return 0;
    }
    La sortie par contre ,ne correspond pas à celle attendue :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    groupe supplémentaires : 0 0 0 0 0 0
    Où sont donc passés les ID's ?

  2. #2
    Membre habitué
    Profil pro
    Inscrit en
    Décembre 2002
    Messages
    230
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2002
    Messages : 230
    Points : 132
    Points
    132
    Par défaut
    Salut,

    en cherchant une solution à ce problème que j'ai moi aussi, je suis tombé sur ton topic. Je sais qu'il est vieux mais ca peut servir à d'autres vu que tu n'as pas apporté la réponse. La voici :

    il manque un second appel :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    size = getgroups(size, table_gid_supp);
    juste avant la boucle qui affiche les valeurs...

    Voilà tout !
    @+

Discussions similaires

  1. Réponses: 1
    Dernier message: 06/12/2006, 20h59
  2. appel système en c sous linux
    Par momoh dans le forum POSIX
    Réponses: 5
    Dernier message: 03/12/2006, 18h34
  3. Réponses: 3
    Dernier message: 20/06/2006, 07h06
  4. [UBUNTU] Ajout nouvel appel système ?
    Par [Margot] dans le forum Ubuntu
    Réponses: 5
    Dernier message: 11/05/2006, 14h11
  5. appel système opendir dans thread
    Par madimane dans le forum POSIX
    Réponses: 2
    Dernier message: 14/04/2006, 05h39

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo