GETGRNAM(3)

НАЗВАНИЕ
getgrnam, getgrgid - получает записи файла групп

СИНТАКСИС
#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 и другие.

СМ. ТАКЖЕ
fgetgrent(3), getgrent(3), setgrent(3), endgrent(3)