#include <grp.h>#include <sys/types.h>struct group *getgrnam(const char *name);struct group *getgrgid(gid_t gid);
ОПИСАНИЕ
Функция
getgrnam()
возвращает указатель на структуру, содержащую информацию из файла
/etc/group
о группе, имя которой совпадает с
name.
Функция
getgrgid()
возвращает указатель на структуру, содержащую информацию из файла
/etc/group
о группе, идентификатор которой совпадает с
gid.
Структура
group
определена в
<grp.h>
следующим образом:
struct group {
char *gr_name; /* название группы */
char *gr_passwd; /* пароль группы */
gid_t gr_gid; /* идентификатор группы */
char **gr_mem; /* члены группы */
};
ВОЗВРАЩАЕМЫЕ ЗНАЧЕНИЯ
Функции getgrnam() и getgrgid() возвращают указатель
на структуру с информацией о группе или NULL, если соответствующий
элемент не найден или если произошла ошибка. При ошибках переменная
errno
соответственно устанавливается.
Возвращаемое значение может указывать на статическую область, но
может быть переопределено последующимим вызовами.
НАЙДЕННЫЕ ОШИБКИ
0 или ENOENT или ESRCH или EBADF или EPERM или ...
Заданное
name
или
gid
не найдено.
ENOMEM
Недостаточно памяти.
EIO
Ошибка ввода/вывода.
EINTR
Был пойман сигнал.
EMFILE
В вызывающем процессе достигнуто максимальное число (OPEN_MAX) файлов.
ENFILE
В системе уже достигнуто максимальное число файлов.
ФАЙЛЫ
/etc/group
(файл с базой данных групп).
СООТВЕТСТВИЕ СТАНДАРТАМ
SVID 3, POSIX, BSD 4.3
ЗАМЕЧАНИЯ
Выводы, указанные выше в разделе "ВОЗВРАЩАЕМОЕ ЗНАЧЕНИЕ", взяты из POSIX.1-2001.
При этом никогда не вызывается ошибка "not found/не найдено",
так как не определено никакое значение переменной
errno
в этой ситуации. Но это приводит к тому, что ошибка может быть не распознана.
Поэтому считается, что в соответствии с POSIX
errno
должно оставаться неизменным, если элемент не был найден. Опыты с разными
Unix-подобными системами показывают, что в этой ситуации возвращаются абсолютно
разные значения: 0, ENOENT, EBADF, ESRCH, EWOULDBLOCK, EPERM и другие.