Provided by: manpages-ru-dev_4.19.0-7_all
ИМЯ
getservent, getservbyname, getservbyport, setservent, endservent - возвращают запись о службе
LIBRARY
Standard C library (libc, -lc)
СИНТАКСИС
#include <netdb.h> struct servent *getservent(void); struct servent *getservbyname(const char *name, const char *proto); struct servent *getservbyport(int port, const char *proto); void setservent(int stayopen); void endservent(void);
ОПИСАНИЕ
Функция getservent() считывает следующую запись из файла, содержащего базу служб (смотрите services(5)), и возвращает структуру servent, содержащую поля из этой записи. При необходимости будет открыто подключение к базе. Функция getservbyname() возвращает структуру servent элемента из базы данных, который совпадает со службой name и использующей протокол proto. Если значение proto равно NULL, то подойдёт любой протокол. При необходимости будет открыто подключение к базе. Функция getservbyport() возвращает структуру servent элемента из базы данных, который совпадает с портом port (значение имеет сетевой порядок байт) и использующей протокол proto. Если значение proto равно NULL, то подойдёт любой протокол. При необходимости будет открыто подключение к базе. Функция setservent() открывает соединение к базе и устанавливает следующую запись к первой записи. Если stayopen не равен нулю, то подключение к базе между вызовами нескольких функций getserv*() не будет закрыто. Функция endservent() закрывает подключение к базе. Структура servent определена в <netdb.h> таким образом: struct servent { char *s_name; /* официальное имя службы */ char **s_aliases; /* список псевдонимов */ int s_port; /* номер порта */ char *s_proto; /* используемый протокол */ } Члены структуры servent: s_name Официальное название службы. s_aliases Список альтернативных имён службы, завершающийся NULL. s_port Номер порта службы, задаваемый в сетевом порядке байт. s_proto Имя протокола, используемого с данной службой.
ВОЗВРАЩАЕМОЕ ЗНАЧЕНИЕ
The getservent(), getservbyname(), and getservbyport() functions return a pointer to a statically allocated servent structure, or NULL if an error occurs or the end of the file is reached.
ФАЙЛЫ
/etc/services файл базы данных служб
АТРИБУТЫ
Описание терминов данного раздела смотрите в attributes(7). ┌────────────────┬──────────────────────┬─────────────────────────────────────────────────┐ │Интерфейс │ Атрибут │ Значение │ ├────────────────┼──────────────────────┼─────────────────────────────────────────────────┤ │getservent() │ Безвредность в нитях │ MT-Unsafe race:servent race:serventbuf locale │ ├────────────────┼──────────────────────┼─────────────────────────────────────────────────┤ │getservbyname() │ Безвредность в нитях │ MT-Unsafe race:servbyname locale │ ├────────────────┼──────────────────────┼─────────────────────────────────────────────────┤ │getservbyport() │ Безвредность в нитях │ MT-Unsafe race:servbyport locale │ ├────────────────┼──────────────────────┼─────────────────────────────────────────────────┤ │setservent(), │ Безвредность в нитях │ MT-Unsafe race:servent locale │ │endservent() │ │ │ └────────────────┴──────────────────────┴─────────────────────────────────────────────────┘ В приведённой выше таблице servent в race:servent означает, что если в нескольких нитях программы одновременно используются функции setservent(), getservent() или endservent(), то может возникнуть состязательность по данным.
СТАНДАРТЫ
POSIX.1-2001, POSIX.1-2008, 4.3BSD.
СМ. ТАКЖЕ
getnetent(3), getprotoent(3), getservent_r(3), services(5)
ПЕРЕВОД
Русский перевод этой страницы руководства был сделан Azamat Hackimov <azamat.hackimov@gmail.com>, Dmitry Bolkhovskikh <d20052005@yandex.ru>, 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⟩.