ОБЗОР
#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), то может возникнуть состязательность по данным.