getgrent_r(3) Library Functions Manual getgrent_r(3) NUME getgrent_r, fgetgrent_r - obine intrarea fiierului de grup in mod reentrant BIBLIOTECA Biblioteca C standard (libc, -lc) SINOPSIS #include int getgrent_r(size_t size; struct group *restrict gbuf, char buf[restrict size], size_t size, struct group **restrict gbufp); int fgetgrent_r(size_t size; FILE *restrict stream, struct group *restrict gbuf, char buf[restrict size], size_t size, struct group **restrict gbufp); Cerine pentru macrocomenzi de testare a caracteristicilor pentru glibc (consultai feature_test_macros(7)): getgrent_r(): _GNU_SOURCE fgetgrent_r(): Incepand cu glibc 2.19: _DEFAULT_SOURCE glibc 2.19 i versiunile anterioare: _SVID_SOURCE DESCRIERE Funciile getgrent_r() i fgetgrent_r() sunt versiunile reentrante ale funciilor getgrent(3) i fgetgrent(3). Prima citete urmatoarea intrare de grup din fluxul iniializat de setgrent(3). Cea de-a doua citete urmatoarea intrare de grup din stream. Structura group este definita in dupa cum urmeaza: 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 terminaie NULL la numele membrilor grupului */ }; Pentru mai multe informaii despre campurile acestei structuri, a se vedea group(5). Funciile care nu sunt reentrante returneaza un indicator catre stocarea statica, unde aceasta stocare statica conine ali indicatori catre numele grupului, parola i membrii. Funciile reentrante descrise aici returneaza toate acestea in memoriile tampon furnizate de apelant. In primul rand, exista o memorie tampon gbuf care poate conine o structura de grup. i apoi tamponul buf de dimensiune size care poate conine iruri de caractere suplimentare. Rezultatul acestor funcii, structura de grup citita din flux, este stocata in memoria tampon furnizata *gbuf, iar un indicator la aceasta structura de grup este returnat in *gbufp. VALOAREA RETURNATA In caz de succes, aceste funcii returneaza 0, iar *gbufp este un indicator la structura de grup. In caz de eroare, aceste funcii returneaza o valoare de eroare, iar *gbufp este NULL. ERORI-IEIRE ENOENT Nu mai exista alte intrari. ERANGE Spaiu de memorie tampon furnizat insuficient. Incercai din nou cu o memorie tampon mai mare. ATRIBUTE Pentru o explicaie a termenilor folosii in aceasta seciune, a se vedea attributes(7). +--------------+---------------------+---------------------------------+ |Interfaa | Atribut | Valoare | +--------------+---------------------+---------------------------------+ |getgrent_r() | Sigurana firelor | MT-Unsafe race:grent locale | +--------------+---------------------+---------------------------------+ |fgetgrent_r() | Sigurana firelor | MT-Safe | +--------------+---------------------+---------------------------------+ In tabelul de mai sus, grent din race:grent semnifica faptul ca, daca oricare dintre funciile setgrent(3), getgrent(3), endgrent(3) sau getgrent_r() sunt utilizate in paralel in diferite fire de execuie ale unui program, pot aparea competiii de date. VERSIUNI Alte sisteme utilizeaza prototipul struct group *getgrent_r(struct group *grp, char buf[.size], int size); sau, mai bine zis, int getgrent_r(struct group *grp, char buf[.size], int size, FILE **gr_fp); STANDARDE GNU. ISTORIC Aceste funcii sunt realizate intr-un stil asemanator cu versiunea POSIX a unor funcii precum getpwnam_r(3). NOTE Funcia getgrent_r() nu este cu adevarat reentranta, deoarece imparte poziia de citire in flux cu toate celelalte fire de execuie. EXEMPLE #define _GNU_SOURCE #include #include #include #include #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); } CONSULTAI I fgetgrent(3), getgrent(3), getgrgid(3), getgrnam(3), putgrent(3), group(5) TRADUCERE Traducerea in limba romana a acestui manual a fost facuta de Remus- Gabriel Chelu Aceasta traducere este documentaie gratuita; citii Licena publica generala GNU Versiunea 3 sau o versiune ulterioara cu privire la condiii privind drepturile de autor. NU se asuma NICIO RESPONSABILITATE. Daca gasii erori in traducerea acestui manual, va rugam sa trimitei un e-mail la . Pagini de manual de Linux 6.15 28 iunie 2025 getgrent_r(3)