Provided by: manpages-ru-dev_4.21.0-2_all
ИМЯ
setnetgrent, endnetgrent, getnetgrent, getnetgrent_r, innetgr - работа с элементами групп сетей
LIBRARY
Standard C library (libc, -lc)
СИНТАКСИС
#include <netdb.h> int setnetgrent(const char *netgroup); void endnetgrent(void); int getnetgrent(char **restrict host, char **restrict user, char **restrict domain); int getnetgrent_r(char **restrict host, char **restrict user, char **restrict domain, char buf[restrict .buflen], size_t buflen); int innetgr(const char *netgroup, const char *host, const char *user, const char *domain); Требования макроса тестирования свойств для glibc (см. feature_test_macros(7)): setnetgrent(), endnetgrent(), getnetgrent(), getnetgrent_r(), innetgr(): начиная с glibc 2.19: _DEFAULT_SOURCE в glibc 2.19 и старее: _BSD_SOURCE || _SVID_SOURCE
ОПИСАНИЕ
Файл netgroup впервые появился в SunOS. База данных netgroup представляет собой список строк с тремя элементами (hostname, username, domainname) или с другими именами netgroup. Любой из элементов тройки может быть пустым, то есть совпадает с любым значением. Описываемые здесь функции предоставляют доступ к базам данных netgroup. В файле /etc/nsswitch.conf задаётся какая база данных будет использована при поиске. Вызов setnetgrent() настраивает netgroup, которая будет использована при поиске в последующих вызовах getnetgrent(). Функция getnetgrent() выбирает следующий элемент netgroup и возвращает указатели в host, user, domain. Указатель null означает, что соответствующая запись совпадает с любой строкой. Значения указателей корректны до тех пор, пока не произойдёт других вызовов функций работы с netgroup. Чтобы избежать этой проблемы вы можете использовать функцию GNU getnetgrent_r(), которая хранит строки в переданной ей буфере. Чтобы освободить все выделенные буферы используйте endnetgrent(). В большинстве случаев чаще всего проверяется присутствие тройки (hostname, username, domainname) в netgroup. Для этого можно использовать функцию innetgr() и не вызывать остальные три функции. Не забудьте, что указатель null — универсальный символ и совпадает с любой строкой. Функцию можно безопасно использовать в нитях.
ВОЗВРАЩАЕМОЕ ЗНАЧЕНИЕ
При успешном выполнении эти функции возвращают 1 и 0 при ошибке.
ФАЙЛЫ
/etc/netgroup /etc/nsswitch.conf
АТРИБУТЫ
Описание терминов данного раздела смотрите в attributes(7). ┌─────────────────┬──────────────────────┬────────────────────────────────────────────────┐ │Интерфейс │ Атрибут │ Значение │ ├─────────────────┼──────────────────────┼────────────────────────────────────────────────┤ │setnetgrent(), │ Безвредность в нитях │ MT-Unsafe race:netgrent locale │ │getnetgrent_r(), │ │ │ │innetgr() │ │ │ ├─────────────────┼──────────────────────┼────────────────────────────────────────────────┤ │endnetgrent() │ Безвредность в нитях │ MT-Unsafe race:netgrent │ ├─────────────────┼──────────────────────┼────────────────────────────────────────────────┤ │getnetgrent() │ Безвредность в нитях │ MT-Unsafe race:netgrent race:netgrentbuf │ │ │ │ locale │ └─────────────────┴──────────────────────┴────────────────────────────────────────────────┘ В приведённой выше таблице netgrent в race:netgrent означает, что если в нескольких нитях программы одновременно используются функции setnetgrent(), getnetgrent_r(), innetgr(), getnetgrent() или endnetgrent(), то может возникнуть состязательность по данным.
СТАНДАРТЫ
Эти функции отсутствуют в POSIX.1, но setnetgrent(), endnetgrent(), getnetgrent() и innetgr() доступны в большинстве систем UNIX. Функция getnetgrent_r() не так широко распространена в других системах.
ЗАМЕЧАНИЯ
В реализации BSD функция setnetgrent() возвращает void.
СМ. ТАКЖЕ
sethostent(3), setprotoent(3), setservent(3)
ПЕРЕВОД
Русский перевод этой страницы руководства был сделан Alexander Golubev <fatzer2@gmail.com>, Azamat Hackimov <azamat.hackimov@gmail.com>, Hotellook, Nikita <zxcvbnm3230@mail.ru>, Spiros Georgaras <sng@hellug.gr>, Vladislav <ivladislavefimov@gmail.com>, Yuri Kozlov <yuray@komyakino.ru> и Иван Павлов <pavia00@gmail.com> Этот перевод является бесплатной документацией; прочитайте Стандартную общественную лицензию GNU версии 3 ⟨https://www.gnu.org/licenses/gpl-3.0.html⟩ или более позднюю, чтобы узнать об условиях авторского права. Мы не несем НИКАКОЙ ОТВЕТСТВЕННОСТИ. Если вы обнаружите ошибки в переводе этой страницы руководства, пожалуйста, отправьте электронное письмо на ⟨man-pages-ru-talks@lists.sourceforge.net⟩.