getpwuid_r()

Получить информацию о пользователе по идентификатору

Прототип:

#include <sys/types.h>
#include <pwd.h>
int getpwuid_r( uid_t uid,
struct passwd *pwd,
char *buffer,
size_t bufsize,
struct passwd **result );

Аргументы:

uid
Идентификатор пользователя, запись о котором требуется найти.
pwd
Указатель на структуру struct passwd, где функция может хранить запись.
buffer
Область памяти, которую функция может использовать для выделения памяти, на которую ссылается структура struct passwd. Существует возможность определить максимальный размер, необходимый для данной области памяти путем вызова sysconf() с аргументом _SC_GETPW_R_SIZE_MAX.
bufsize
Размер области памяти (в символах), на которую указывает buffer.
result
Адрес указателя на структуру struct passwd. Если getpwuid_r() находит запись, она сохраняет указатель на pwd в области памяти result; в противном случае, функция хранит там нулевой указатель.

Библиотека:

libc

Описание:

Функция getpwuid_r() допускает повторный вызов, в отличие от getpwuid(). Она позволяет процессу получить больше информации о пользователе с заданным uid.

Если определено _POSIX_THREAD_SAFE_FUNCTIONS, функция getpwuid_r() обновляет структуру struct passwd, на которую указывает pwd и сохраняет указатель на эту структуру в области памяти result. Структура содержит запись из базы данных пользователей с заданным uid.

Функция сохраняет нулевой указатель в области памяти result в случае ошибки или невозможности найти запрашиваемую запись.

Возвращаемое значение:

0 в случае успешного завершения, либо код ошибки.

Коды ошибок:

ERANGE
Недостаточно памяти для хранения результирующей структуры struct passwd.

Функция getpwuid_r() вызывает следующие функции, и как следствие, errno может быть установлен в одном из этих вызовов:

Классификация:

POSIX 1003.1 TSF

Точка остановки потока
Да
Обработчик прерываний
Нет
Обработчик сигналов
Нет
В потоке
Да

Тематические ссылки:

struct passwd, getlogin(), getpwent(), getpwent_r(), getpwnam(), getpwnam_r(), getpwuid()




Предыдущий раздел: Описание API системной библиотеки