GETSERVENT(3)

ИМЯ
getservent, getservbyname, getservbyport, setservent, 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.

СМОТРИТЕ ТАКЖЕ
getnetent(3), getprotoent(3), getservent_r(3), services(5)