Provided by: manpages-ro-dev_4.27.0-1_all bug

NUME

       getgrent_r, fgetgrent_r - obține intrarea fișierului de grup în mod reentrant

BIBLIOTECA

       Biblioteca C standard (libc, -lc)

SINOPSIS

       #include <grp.h>

       int getgrent_r(struct group *restrict gbuf,
                      char buf[restrict .buflen], size_t buflen,
                      struct group **restrict gbufp);
       int fgetgrent_r(FILE *restrict stream, struct group *restrict gbuf,
                      char buf[restrict .buflen], size_t buflen,
                      struct group **restrict gbufp);

   Cerințe pentru macrocomenzi de testare a caracteristicilor pentru glibc (consultați feature_test_macros(7)):

       getgrent_r():
           _GNU_SOURCE

       fgetgrent_r():
           Începând cu glibc 2.19:
               _DEFAULT_SOURCE
           glibc 2.19 și versiunile anterioare:
               _SVID_SOURCE

DESCRIERE

       Funcțiile  getgrent_r()  și  fgetgrent_r()  sunt  versiunile  reentrante  ale  funcțiilor  getgrent(3) și
       fgetgrent(3). Prima citește următoarea intrare de grup din fluxul inițializat de  setgrent(3).  Cea  de-a
       doua citește următoarea intrare de grup din stream.

       Structura group este definită în <grp.h> după cum urmează:

           struct group {
               char   *gr_name;        /* numele grupului */
               char   *gr_passwd;      /* parola grupului */
               gid_t   gr_gid;         /* identificatorul grupului */
               char  **gr_mem;         /* vector de indicatori cu terminație NULL
                                          la numele membrilor grupului */
           };

       Pentru mai multe informații despre câmpurile acestei structuri, a se vedea group(5).

       Funcțiile  care  nu  sunt reentrante returnează un indicator către stocarea statică, unde această stocare
       statică conține alți indicatori către numele grupului, parola și membrii. Funcțiile  reentrante  descrise
       aici  returnează toate acestea în memoriile tampon furnizate de apelant. În primul rând, există o memorie
       tampon gbuf care poate conține o structură de grup. Și apoi tamponul buf de dimensiune buflen care  poate
       conține  șiruri de caractere suplimentare. Rezultatul acestor funcții, structura de grup citită din flux,
       este stocată în memoria tampon furnizată *gbuf, iar un  indicator  la  această  structură  de  grup  este
       returnat în *gbufp.

VALOAREA RETURNATĂ

       În  caz de succes, aceste funcții returnează 0, iar *gbufp este un indicator la structura de grup. În caz
       de eroare, aceste funcții returnează o valoare de eroare, iar *gbufp este NULL.

ERORI-IEȘIRE

       ENOENT Nu mai există alte intrări.

       ERANGE Spațiu de memorie tampon furnizat insuficient. Încercați din nou cu o memorie tampon mai mare.

ATRIBUTE

       Pentru o explicație a termenilor folosiți în această secțiune, a se vedea attributes(7).
       ┌───────────────┬───────────────────┬───────────────────────────────────────────────────────────────────┐
       │ InterfațăAtributValoare                                                           │
       ├───────────────┼───────────────────┼───────────────────────────────────────────────────────────────────┤
       │ getgrent_r()  │ Siguranța firelor │ MT-Unsafe race:grent locale                                       │
       ├───────────────┼───────────────────┼───────────────────────────────────────────────────────────────────┤
       │ fgetgrent_r() │ Siguranța firelor │ MT-Safe                                                           │
       └───────────────┴───────────────────┴───────────────────────────────────────────────────────────────────┘

       În tabelul de mai  sus,  grent  din  race:grent  semnifică  faptul  că,  dacă  oricare  dintre  funcțiile
       setgrent(3),  getgrent(3),  endgrent(3)  sau  getgrent_r()  sunt utilizate în paralel în diferite fire de
       execuție ale unui program, pot apărea competiții de date.

VERSIUNI

       Alte sisteme utilizează prototipul

           struct group *getgrent_r(struct group *grp, char *buf,
                                    int buflen);

       sau, mai bine zis,

           int getgrent_r(struct group *grp, char *buf, int buflen,
                          FILE **gr_fp);

STANDARDE

       GNU.

ISTORIC

       Aceste funcții sunt  realizate  într-un  stil  asemănător  cu  versiunea  POSIX  a  unor  funcții  precum
       getpwnam_r(3).

NOTE

       Funcția  getgrent_r() nu este cu adevărat reentrantă, deoarece împarte poziția de citire în flux cu toate
       celelalte fire de execuție.

EXEMPLE

       #define _GNU_SOURCE
       #include <grp.h>
       #include <stdint.h>
       #include <stdio.h>
       #include <stdlib.h>
       #define BUFLEN 4096

       int
       main(void)
       {
           struct group grp;
           struct group *grpp;
           char buf[BUFLEN];
           int i;

           setgrent();
           while (1) {
               i = getgrent_r(&grp, buf, sizeof(buf), &grpp);
               if (i)
                   break;
               printf("%s (%jd):", grpp->gr_name, (intmax_t) grpp->gr_gid);
               for (size_t j = 0; ; j++) {
                   if (grpp->gr_mem[j] == NULL)
                       break;
                   printf(" %s", grpp->gr_mem[j]);
               }
               printf("\n");
           }
           endgrent();
           exit(EXIT_SUCCESS);
       }

CONSULTAȚI ȘI

       fgetgrent(3), getgrent(3), getgrgid(3), getgrnam(3), putgrent(3), group(5)

TRADUCERE

       Traducerea   în   limba   română   a   acestui   manual   a   fost   făcută   de   Remus-Gabriel    Chelu
       <remusgabriel.chelu@disroot.org>

       Această  traducere  este  documentație  gratuită;  citiți  Licența publică generală GNU Versiunea 3 sau o
       versiune  ulterioară  cu  privire  la  condiții  privind  drepturile  de  autor.   NU  se   asumă   NICIO
       RESPONSABILITATE.

       Dacă  găsiți  erori  în  traducerea  acestui manual, vă rugăm să trimiteți un e-mail la translation-team-
       ro@lists.sourceforge.net.

Pagini de manual de Linux 6.9.1                   15 iunie 2024                                    getgrent_r(3)