getgrent_r(3) Library Functions Manual getgrent_r(3) getgrent_r, fgetgrent_r - (libc -lc) #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); glibc ( feature_test_macros(7)): getgrent_r(): _GNU_SOURCE fgetgrent_r(): glibc 2.19: _DEFAULT_SOURCE glibc 2.19 : _SVID_SOURCE getgrent_r() fgetgrent_r() getgrent(3) fgetgrent(3). setgrent(3). stream. group : struct group { char *gr_name; /* */ char *gr_passwd; /* */ gid_t gr_gid; /* */ char **gr_mem; /* NULL */ }; group(5). . . gbuf struct group. buf size . struct group *gbuf struct group *gbufp. 0 *gbufp struct group. *gbufp NULL. ENOENT . ERANGE (buffer) . . attributes(7). +----------------------+------------------------------------+----------+ | | | | +----------------------+------------------------------------+----------+ |getgrent_r() | | | | | | | | | | | | | | | | | | (MT-Unsafe) | | | | :grent | | | | locale | +----------------------+------------------------------------+----------+ |fgetgrent_r() | | MT-Safe | +----------------------+------------------------------------+----------+ grent race:grent setgrent(3) getgrent(3) endgrent(3) getgrent_r() . struct group *getgrent_r(struct group *grp, char buf[.size], int size); int getgrent_r(struct group *grp, char buf[.size], int size, FILE **gr_fp); GNU. POSIX getpwnam_r(3). getgrent_r() . #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(); for (;;) { 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); } fgetgrent(3), getgrent(3), getgrgid(3), getgrnam(3), putgrent(3), group(5) 3 . . : . 6.18 14 2026 getgrent_r(3)