GETPWNAM(3)

НАЗВАНИЕ
getpwnam, getpwuid - получают запись из файла паролей

СИНТАКСИС
#include <pwd.h>
#include <sys/types.h>

struct passwd *getpwnam(const char *name);

struct passwd *getpwuid(uid_t uid);

ОПИСАНИЕ
Функция getpwnam() возвращает указатель на структуру, содержащую поля строки из файла /etc/passwd для записи, совпадающей с именем пользователя name.

Функция getpwuid() возвращает указатель на структуру, содержащую поля строки из файла /etc/passwd для записи, совпадающей с идентификатором пользователя uid.

Структура passwd определена в файле <pwd.h> следующим образом:

    struct passwd {
            char    *pw_name;		/* имя пользователя */
            char    *pw_passwd;		/* пароль пользователя */
            uid_t   pw_uid;			/* id пользователя */
            gid_t   pw_gid;			/* id группы */
            char    *pw_gecos;      	/* настоящее имя */
            char    *pw_dir;  		/* домашний каталог */
            char    *pw_shell;      	/* программа-оболочка */
    };

ВОЗВРАЩАЕМЫЕ ЗНАЧЕНИЯ
Функции getpwnam() и getpwuid() возвращают указатель на структуру passwd или NULL, если искомая запись не найдена или произошла ошибка.

НАЙДЕННЫЕ ОШИБКИ

0 или ENOENT или ESRCH или EBADF или EPERM или ...
    Заданное name или gid не найдены.

ENOMEM
    Недостаточно памяти для размещения структуры passwd.

EIO Ошибка ввода/вывода.

EINTR
    Был пойман сигнал.

EMFILE
    В вызывающем процессе достигнуто максимальное число (OPEN_MAX) файлов.

ENFILE
    В системе уже достигнуто максимальное число файлов.

ФАЙЛЫ

/etc/passwd
    (файл базы данных паролей).

СООТВЕТСТВИЕ СТАНДАРТАМ
SVID 3, POSIX, BSD 4.3

ЗАМЕЧАНИЯ
Выводы, указанные выше в разделе "ВОЗВРАЩАЕМОЕ ЗНАЧЕНИЕ", взяты из POSIX.1-2001. При этом никогда не вызывается ошибка "not found/не найдено", так как не определено никакое значение переменной errno в этой ситуации. Но это приводит к тому, что ошибка может быть не распознана. Поэтому считается, что в соответствии с POSIX errno должно оставаться неизменным, если элемент не был найден. Опыты с разными Unix-подобными системами показывают, что в этой ситуации возвращаются абсолютно разные значения: 0, ENOENT, EBADF, ESRCH, EWOULDBLOCK, EPERM и другие.

СМ. ТАКЖЕ
fgetpwent(3), getgrnam(3), getpwent(3), setpwent(3), endpwent(3), getpw(3), putpwent(3), passwd(5)