![]() |
|
|
GruppenAnalog funktioniert das Auslesen der Gruppendatei. Auch hier gibt es eine Struktur, die nach der Datei benannt ist.
struct group { char *gr_name; /* Gruppenname */ char *gr_passwd; /* Gruppenpasswort */ gid_t gr_gid; /* Gruppen-id */ char **gr_mem; /* Gruppenmitglieder */ };
Die Gruppenmitglieder befinden sich im Strukturelement gr_mem. Das ist ein Array
von Strings. Das letzte Element des Arrays hat den Wert NULL.
Auch hier gibt es Funktionen um anhand der ID oder des Namens den
entsprechenden Eintrag zu finden. Sie heißen
#include <grp.h> #include <sys/types.h> struct group *getgrnam(const char *name); struct group *getgrgid(gid_t gid); Auch das Auslesen der group-Datei läuft auf diese Weise:
#include <grp.h> #include <sys/types.h> struct group *getgrent(void); void setgrent(void); void endgrent(void); Das folgende Beispiel liest die /etc/group aus und listet für jede Gruppe die Mitglieder auf.
[Auslesen der Gruppen und ihrer Mitglieder] #include <grp.h>
int main() { struct group *grp; char *member; int i;
setgrent(); while ( grp = getgrent()) { puts(grp->gr_name); i = 0; member = grp->gr_mem[i++]; while (member) { puts(member); member = grp->gr_mem[i++]; } puts("--------");
} endgrent(); }
Ein Prozess kann mit der Funktion
[mygroups] #include <grp.h> #include <limits.h> #include <sys/types.h>
int main() { gid_t grplist[NGROUPS_MAX]; struct group *grp; char *member; int i, anzGruppen;
anzGruppen = getgroups(NGROUPS_MAX, grplist); for (i=0; i<anzGruppen; i++) { grp = getgrgid(grplist[i]); puts(grp->gr_name); } }
|
|
Copyright © Rheinwerk Verlag GmbH 2003
Für Ihren privaten Gebrauch dürfen Sie die Online-Version natürlich ausdrucken.
Ansonsten unterliegt das Openbook denselben Bestimmungen wie die gebundene Ausgabe:
Das Werk einschließlich aller seiner Teile ist urheberrechtlich geschützt.
Alle Rechte vorbehalten einschließlich der Vervielfältigung, Übersetzung, Mikroverfilmung sowie
Einspeicherung und Verarbeitung in elektronischen Systemen.
Nutzungsbestimmungen | Datenschutz | Impressum
Rheinwerk Verlag GmbH, Rheinwerkallee 4, 53227 Bonn, Tel.: 0228.42150.0, Fax 0228.42150.77, service@rheinwerk-verlag.de
Cookie-Einstellungen ändern