getpwent_r(3) Library Functions Manual getpwent_r(3) getpwent_r, fgetpwent_r - (libc -lc) #include int getpwent_r(size_t size; struct passwd *restrict pwbuf, char buf[restrict size], size_t size, struct passwd **restrict pwbufp); int fgetpwent_r(size_t size; FILE *restrict stream, struct passwd *restrict pwbuf, char buf[restrict size], size_t size, struct passwd **restrict pwbufp); glibc ( feature_test_macros(7)): getpwent_r() glibc 2.19: _DEFAULT_SOURCE glibc 2.19 : _BSD_SOURCE || _SVID_SOURCE fgetpwent_r() glibc 2.19: _DEFAULT_SOURCE glibc 2.19 : _SVID_SOURCE getpwent_r() fgetpwent_r() getpwent(3) fgetpwent(3). passwd setpwent(3). passwd stream. passwd : struct passwd { char *pw_name; /* */ char *pw_passwd; /* */ uid_t pw_uid; /* */ gid_t pw_gid; /* */ char *pw_gecos; /* */ char *pw_dir; /* */ char *pw_shell; /* */ }; passwd(5). gecos . . pwbuf struct passwd. buf size . struct passwd *pwbuf struct passwd *pwbufp. 0 *pwbufp struct passwd. *pwbufp NULL. ENOENT . ERANGE (buffer) . . attributes(7). +----------------------+------------------------------------+----------+ | | | | +----------------------+------------------------------------+----------+ |getpwent_r() | | | | | | | | | | | | | | | | | | (MT-Unsafe) | | | | :pwent | | | | locale | +----------------------+------------------------------------+----------+ |fgetpwent_r() | | MT-Safe | +----------------------+------------------------------------+----------+ pwent race:pwent setpwent() getpwent() endpwent() getpwent_r() . struct passwd * getpwent_r(struct passwd *pwd, char buf[.size], int size); int getpwent_r(struct passwd *pwd, char buf[.size], int size, FILE **pw_fp); . POSIX getpwnam_r(3). getpwent_r() . #define _GNU_SOURCE #include #include #include #include #define BUFLEN 4096 int main(void) { struct passwd pw; struct passwd *pwp; char buf[BUFLEN]; int i; setpwent(); for (;;) { i = getpwent_r(&pw, buf, sizeof(buf), &pwp); if (i) break; printf("%s (%jd)\tHOME %s\tSHELL %s\n", pwp->pw_name, (intmax_t) pwp->pw_uid, pwp->pw_dir, pwp->pw_shell); } endpwent(); exit(EXIT_SUCCESS); } fgetpwent(3) getpw(3) getpwent(3) getpwnam(3) getpwuid(3) putpwent(3) passwd(5) 3 . . : . 6.18 14 2026 getpwent_r(3)