J'ai essayé de résoudre l'affichage de tous les utilisateurs qui appartiennent au groupe spécifié comme paramètre (optarg).C - Utilisateurs appartenant au groupe - Linux
J'ai écrit le premier cas qui montre tous les utilisateurs et en dessous de leurs groupes, et maintenant je veux créer un cas avec le paramètre optarg contenant le nom du groupe.
Je ne peux pas utiliser gr_mem car je ne suis pas root.
struct passwd *p;
gid_t *groups = NULL;
int ng = 0;
struct group *gr;
int i, opt;
while((opt = getopt (argc, argv, "a")) != -1){
switch(opt){
case 'a':
setpwent();
while ((p=getpwent()) != NULL){
printf("%s\n", p->pw_name);
if(getgrouplist(p->pw_name, p->pw_gid, groups, &ng) < 0){
groups = (gid_t*) malloc(ng * sizeof (gid_t));
getgrouplist(p->pw_name, p->pw_gid, groups, &ng);
}
for(i = 0; i<ng; i++){
gr = getgrgid(groups[i]);
printf("%s\n", gr->gr_name);
}
}
endpwent();
return 0;
}
}
setpwent();
while ((p=getpwent()) != NULL)
printf("%s\n", p->pw_name);
endpwent();