GETPWNAMSection: Linux Programmer's Manual (3)Updated: 1996-05-27 |
GETPWNAMSection: Linux Programmer's Manual (3)Updated: 1996-05-27 |
#include <sys/types.h> #include <pwd.h> struct passwd *getpwnam(const char *name); struct passwd *getpwuid(uid_t uid); int getpwnam_r(const char *name, struct passwd *pwbuf,
char *buf, size_t buflen, struct passwd **pwbufp); int getpwuid_r(uid_t uid, struct passwd *pwbuf,
char *buf, size_t buflen, struct passwd **pwbufp);
The getpwuid() function returns a pointer to a structure containing the broken out fields of a line from /etc/passwd for the entry that matches the user uid uid.
The getpwnam_r() and getpwuid_r() functions find the same information, but store the retrieved passwd structure in the space pointed to by pwbuf. This passwd structure contains pointers to strings, and these strings are stored in the buffer buf of size buflen. A pointer to the result (in case of success) or NULL (in case no entry was found or an error occurred) is stored in *pwbufp.
The passwd structure is defined in <pwd.h> as follows:
struct passwd {
char *pw_name; /* user name */
char *pw_passwd; /* user password */
uid_t pw_uid; /* user id */
gid_t pw_gid; /* group id */
char *pw_gecos; /* real name */
char *pw_dir; /* home directory */
char *pw_shell; /* shell program */
};
The maximum needed size for buf can be found using sysconf(3) with the _SC_GETPW_R_SIZE_MAX parameter.
The return value may point to static area, and may be overwritten by subsequent calls to getpwent(), getpwnam(), or getpwuid().
The getpwnam_r() and getpwuid_r() functions return zero on success. In case of error, an error value is returned.