Provided by: manpages-de-dev_4.23.1-1_all bug

BEZEICHNUNG

       getgrnam, getgrnam_r, getgrgid, getgrgid_r - ermittelt den Eintrag in der Gruppendatei

BIBLIOTHEK

       Standard-C-Bibliothek (libc, -lc)

ÜBERSICHT

       #include <sys/types.h>
       #include <grp.h>

       struct group *getgrnam(const char *name);
       struct group *getgrgid(gid_t gid);

       int getgrnam_r(const char *restrict name, struct group *restrict grp,
                      char puf[restrict .puflänge], size_t puflänge,
                      struct group **restrict ergebnis);
       int getgrgid_r(gid_t gid, struct group *restrict grp,
                      char puf[restrict .puflänge], size_t puflänge,
                      struct group **restrict ergebnis);

   Mit Glibc erforderliche Feature-Test-Makros (siehe feature_test_macros(7)):

       getgrnam_r(), getgrgid_r():
       _POSIX_C_SOURCE
           || /* Glibc <= 2.19: */ _BSD_SOURCE || _SVID_SOURCE

BESCHREIBUNG

       Die  Funktion getgrnam() liefert einen Zeiger auf eine Struktur zurück, die die Felder des
       Eintrags in der Gruppendatenbank (beispielsweise die lokale Gruppendatei  /etc/group,  NIS
       und LDAP), der zur Gruppe name passt.

       Die  Funktion getgrgid() liefert einen Zeiger auf eine Struktur zurück, die die Felder des
       Eintrags in der Gruppendatenbank enthält, der zur Gruppe mit der ID gid passt.

       Die Struktur group wird in <grp.h> wie folgt definiert:

           struct group {
               char   *gr_name;        /* Gruppenname */
               char   *gr_passwd;      /* Gruppenpasswort */
               gid_t   gr_gid;         /* Gruppenkennung */
               char  **gr_mem;         /* mit Nullzeiger abgeschlossenes Feld von Zeigern auf
                                          Namen von Gruppenmitgliedern */
           };

       Weitere Informationen zu den Feldern dieser Struktur finden Sie in group(5).

       Die Funktionen getgrnam_r() und getgrgid_r() beschaffen  die  gleichen  Informationen  wie
       getgrnam()  und  getgrgid(),  speichern aber die abgefragte group-Struktur an dem Ort, auf
       den grp weist. Die String-Felder, auf die die Mitglieder der group-Struktur weisen, werden
       im  Puffer puf der Größe puflänge gespeichert. In *result wird ein Zeiger auf das Ergebnis
       (nach erfolgreichem Aufruf) oder NULL (falls kein Eintrag gefunden wurde oder  ein  Fehler
       auftrat) in * Ergebnis gespeichert.

       Der Aufruf

           sysconf(_SC_GETGR_R_SIZE_MAX)

       liefert  entweder  -1 ohne Änderung von errno oder die anfänglich vorgeschlagene Größe für
       Puffer zurück. (Falls diese Größe zu klein ist, schlägt der Aufruf  mit  ERANGE  fehl.  In
       diesem Fall kann der Aufrufende es mit einem größeren Puffer erneut versuchen.)

RÜCKGABEWERT

       Die  Funktionen  getgrnam() und getgrgid() liefern einen Zeiger auf group-Struktur zurück.
       Wurde  der  gesuchte  Eintrag  nicht  gefunden  oder  trat  ein  Fehler  auf,  wird   NULL
       zurückgeliefert  und  errno  gesetzt,  um  den Fehler anzuzeigen. Wenn Sie nach dem Aufruf
       errno prüfen wollen, sollten er vor dem Aufruf auf 0 gesetzt werden.

       Der Rückgabewert darf auf statischen Speicher zeigen und kann von  nachfolgenden  Aufrufen
       von  getgrent(3),  getgrgid()  oder  getgrnam()  überschrieben  werden. (Übergeben Sie den
       zurückgegebenen Zeiger nicht an free(3).)

       Bei Erfolg geben getgrnam_r() und getgrgid_r() Null zurück und setzen*result auf grp. Wenn
       kein  passender  Gruppen-Datensatz  gefunden  wurde,  geben  diese Funktionen 0 zurück und
       speichern in *result NULL. Im Fehlerfall wird eine Fehlernummer zurückgegeben und wiederum
       NULL in *result gespeichert.

FEHLER

       0 oder ENOENT oder ESRCH oder EBADF oder EPERM oder …
              Der angegebene name oder die gid wurde nicht gefunden.

       EINTR  Ein Signal wurde abgefangen; siehe signal(7).

       EIO    E/A-Fehler (engl. I/O).

       EMFILE Die Beschränkung pro Prozess der Anzahl offener Datei-Deskriptoren wurde erreicht.

       ENFILE Die systemweite Beschränkung für die Gesamtzahl offener Dateien wurde erreicht.

       ENOMEM Es  ist  nicht  ausreichend  Speicher  für  die Bereitstellung einer group-Struktur
              vorhanden.

       ERANGE Zu wenig Pufferspeicher bereitgestellt.

DATEIEN

       /etc/group
              lokale Gruppendatenbank-Datei

ATTRIBUTE

       Siehe attributes(7) für eine Erläuterung der in diesem Abschnitt verwandten Ausdrücke.

       ┌──────────────┬───────────────────────┬──────────────────────────────────────────────────┐
       │SchnittstelleAttributWert                                             │
       ├──────────────┼───────────────────────┼──────────────────────────────────────────────────┤
       │getgrnam()    │ Multithread-Fähigkeit │ MT-Unsicher race:grnam locale                    │
       ├──────────────┼───────────────────────┼──────────────────────────────────────────────────┤
       │getgrgid()    │ Multithread-Fähigkeit │ MT-Unsicher race:grgid locale                    │
       ├──────────────┼───────────────────────┼──────────────────────────────────────────────────┤
       │getgrnam_r(), │ Multithread-Fähigkeit │ MT-Sicher locale                                 │
       │getgrgid_r()  │                       │                                                  │
       └──────────────┴───────────────────────┴──────────────────────────────────────────────────┘

VERSIONEN

       Die  oben  unter  »RÜCKGABEWERT«  gegebene  Formulierung  stammt  aus  POSIX.1. Es ruft im
       Fehlerfall nicht »not found« auf und legt daher nicht fest, welchen Wert errno  in  dieser
       Situation  haben  könnte.  Aber  das  macht  es  unmöglich, Fehler zu erkennen. Man könnte
       argumentieren, dass nach POSIX errno unverändert bleiben sollten, wenn ein  Eintrag  nicht
       gefunden  wird.  Experimente  auf  verschiedenen  UNIX-ähnlichen  Systemen zeigen, dass in
       dieser Situation viele verschiedene Werte auftreten: 0, ENOENT, EBADF, ESRCH, EWOULDBLOCK,
       EPERM und wahrscheinlich weitere.

STANDARDS

       POSIX.1-2008.

GESCHICHTE

       POSIX.1-2001, SVr4, 4.3BSD.

SIEHE AUCH

       endgrent(3), fgetgrent(3), getgrent(3), getpwnam(3), setgrent(3), group(5)

ÜBERSETZUNG

       Die   deutsche   Übersetzung  dieser  Handbuchseite  wurde  von  Martin  Eberhard  Schauer
       <Martin.E.Schauer@gmx.de> und Mario Blättermann <mario.blaettermann@gmail.com> erstellt.

       Diese Übersetzung ist Freie Dokumentation;  lesen  Sie  die  GNU  General  Public  License
       Version  3 ⟨https://www.gnu.org/licenses/gpl-3.0.html⟩ oder neuer bezüglich der Copyright-
       Bedingungen. Es wird KEINE HAFTUNG übernommen.

       Wenn Sie Fehler in der Übersetzung dieser Handbuchseite finden, schicken Sie bitte eine E-
       Mail an die Mailingliste der Übersetzer ⟨debian-l10n-german@lists.debian.org⟩.