Man page - setgrent(3)

Packages contains this manual

Available languages:

en fr pl ja ru ro de

Manual

getgrent

НАИМЕНОВАНИЕ
БИБЛИОТЕКА
ОБЗОР
ОПИСАНИЕ
ВОЗВРАЩАЕМОЕ ЗНАЧЕНИЕ
ОШИБКИ
ФАЙЛЫ
АТРИБУТЫ
СТАНДАРТЫ
ИСТОРИЯ
СМОТРИТЕ ТАКЖЕ
ПЕРЕВОД

НАИМЕНОВАНИЕ

getgrent, setgrent, endgrent - возвращает запись из файла групп

БИБЛИОТЕКА

Стандартная библиотека языка C ( libc , -lc )

ОБЗОР

#include <sys/types.h>
#include <grp.h>

struct group *getgrent(void);

void setgrent(void);
void endgrent(void);

Требования макроса тестирования свойств для glibc (см. feature_test_macros (7)):

setgrent ():
_XOPEN_SOURCE >= 500
|| /* glibc >= 2.19: */ _DEFAULT_SOURCE
|| /* glibc <= 2.19: */ _BSD_SOURCE || _SVID_SOURCE

getgrent (), endgrent ():
Since glibc 2.22:
_XOPEN_SOURCE >= 500 || _DEFAULT_SOURCE
glibc 2.21 and earlier
_XOPEN_SOURCE >= 500
|| /* Since glibc 2.12: */ _POSIX_C_SOURCE >= 200809L
|| /* glibc <= 2.19: */ _BSD_SOURCE || _SVID_SOURCE

ОПИСАНИЕ

Функция getgrent () возвращает указатель на структуру, содержащую разделённую на поля запись базы данных групп (например, локального файла групп /etc/group , NIS и LDAP). При первом вызове getgrent () возвращает первую запись; при следующих последовательно возвращаются остальные записи.

Функция setgrent () возвращается к началу базы данных групп, позволяя выполнять повторное сканирование.

Функция endgrent () используется для закрытия базы данных групп при завершении процесса обработки.

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

struct group {
char *gr_name; /* имя группы */
char *gr_passwd; /* пароль группы */
gid_t gr_gid; /* ID группы */
char **gr_mem; /* массив, указателей
имён членов группы, оканчивающийся NULL */
};

Подробней о полях этой структуры смотрите в group (5).

ВОЗВРАЩАЕМОЕ ЗНАЧЕНИЕ

Функция getgrent () возвращает указатель на структуру group или NULL, если записи закончились или произошла ошибка.

При ошибке может измениться значение errno . Если нужно проверять переменную errno после вызова, то перед этим нужно присвоить ей нулевое значение.

Возвращаемое значение может указывать на статическую область и может быть перезаписано при последующих вызовах getgrent (), getgrgid (3) или getgrnam (3) (не передавайте полученный указатель free (3)).

ОШИБКИ

EAGAIN

Служба временно недоступна; попробуйте позднее. Для NSS из glibc это указывает на временную ошибку обмена с сервером. Ошибка может исчезнуть самостоятельно, предлагается попробовать повторить вызов позднее.

EINTR

При выполнении поступил сигнал; см. signal (7).

EIO

Ошибка ввода-вывода.

EMFILE

Было достигнуто ограничение по количеству открытых файловых дескрипторов на процесс.

ENFILE

Достигнуто максимальное количество открытых файлов в системе.

ENOENT

Необходимый входной файл не найден. Для NSS в glibc это указывает на то, что служба некорректно настроена.

ENOMEM

Недостаточно памяти для структуры group .

ERANGE

Недостаточно места в буфере.

ФАЙЛЫ

/etc/group

локальный файл базы данных групп

АТРИБУТЫ

Описание терминов данного раздела смотрите в attributes (7).

Image grohtml-615896-1.png

В приведённой выше таблице grent в race:grent означает, что если в нескольких нитях программы одновременно используются функции setgrent (), getgrent () или endgrent (), то может возникнуть состязательность по данным.

СТАНДАРТЫ

POSIX.1-2008.

ИСТОРИЯ

POSIX.1-2001, SVr4, 4.3BSD.

СМОТРИТЕ ТАКЖЕ

fgetgrent (3), getgrent_r (3), getgrgid (3), getgrnam (3), getgrouplist (3), putgrent (3), group (5)

ПЕРЕВОД

Русский перевод этой страницы руководства разработал(и) Azamat Hackimov <azamat.hackimov@gmail.com>, Dmitry Bolkhovskikh <d20052005@yandex.ru>, Vladislav <ivladislavefimov@gmail.com>, Yuri Kozlov <yuray@komyakino.ru>, Иван Павлов <pavia00@gmail.com> и Kirill Rekhov <krekhov.dev@gmail.com>

Этот перевод является свободной программной документацией; он распространяется на условиях общедоступной лицензии GNU (GNU General Public License - GPL, https://www.gnu.org/licenses/gpl-3.0.html версии 3 или более поздней) в отношении авторского права, но БЕЗ КАКИХ-ЛИБО ГАРАНТИЙ.

Если вы обнаружите какие-либо ошибки в переводе этой страницы руководства, пожалуйста, сообщите об этом разработчику(ам) по его(их) адресу(ам) электронной почты или по адресу списка рассылки русских переводчиков .