getgrgid_r()

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

Прототип:

#include <sys/types.h>
#include <grp.h>
int getgrgid_r( gid_t gid,
struct group *grp,
char *buffer,
size_t bufsize,
struct group **result );

Аргументы:

gid
Идентификатор группы, для которой требуется получить информацию.
grp
Указатель на структуру struct group где функция может хранить информацию о группе.
buffer
Область памяти, из которой выделять любую необходимую память.
bufsize
Размер области памяти.
result
Адрес указателя, который устаналивает getgrgid_r() в тот же указатель, что и grp при успешном завершении, или в NULL если функция не может найти группу.

Библиотека:

libc

Описание:

Если определено _POSIX_THREAD_SAFE_FUNCTIONS, getgrgid_r() обновляет структуру struct group, на которую указывает grp и сохраняет указатель на эту структуру в result. Структура содержит запись из базы данных групп с совпадающим gid.

Данная функция выделяет память, указанную в struct group из области памяти buffer, размером bufsize символов. Существует возможность задать максимальный размер, необходимый для buffer путем вызова sysconf() с аргументом _SC_GETGR_R_SIZE_MAX.

Функция getgrgid_r() сохраняет NULL указатель в области памяти, на которую указвает result при ошибке или если запрашиваемая запись не была найдена.

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

0
Успешное завершение.
-1
Возникла ошибка. Возвращен код ошибки.

Коды ошибок:

ERANGE
Недостаточно места для хранения в buffer размером bufsize, чтобы вместить результурующую структуру struct group.

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

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

POSIX 1003.1 Thread-Safe Functions

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

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

struct group, getgrgid(), getgrnam(), getgrnam_r(), getlogin(), sysconf()




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