getservent - endservent
getservent(3)
endservent
ОБЗОР
#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
Имя протокола, используемого с данной службой.
ВОЗВРАЩАЕМОЕ ЗНАЧЕНИЕ
Функции
getservent(),
getservbyname() и
getservbyport() возвращают
указатель на статически выделенную структуру
servent или NULL при ошибке
или достижении конца файла.
ФАЙЛЫ
/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(),
endservent()
безвредность в потоках:
MT-Unsafe race:servent
locale
В приведённой выше таблице servent в race:servent означает, что если в
нескольких нитях программы одновременно используются функции
setservent(3), getservent(3) или endservent(3), то может возникнуть
состязательность по данным.
СООТВЕТСТВИЕ СТАНДАРТАМ
POSIX.1-2001, POSIX.1-2008, 4.3BSD.