getservent, getservbyname, getservbyport, setservent, endservent - funkce pro práci s databází služeb
Standardní knihovna C (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);
Funkce getservent() čte další řádek z databáze (vis services(5)) a vrací strukturu servent obsahující pole tohoto záznamu. Spojení s databází je otevřeno, je-li třeba.
Funkce getservbyname() vrací strukturu serventz databáze, která vyhovuje službě name používající protokol proto. Pokud je proto NULL, lze přířadit libovolný protokol. Spojení s databází je otevřeno, je-li třeba.
Funkce getservbyport() vrací ukazatel na strukturu servent pro záznam, který vyhovuje portu port zadanému v síťovém pořadí bajtů a protokolu proto. Pokud je proto NULL, lze přířadit libovolný protokol. Spojení s databází je otevřeno, je-li třeba.
Funkce setservent() otevře databázi a nastaví ukazovátko na jeho začátek. Je-li stayopen nenulové (1), potom soubor nebude mezi voláními getservbyname() a getservbyport() uzavřen.
Funkce endservent() uzavře databázi.
Struktura servent je definována v <netdb.h> následovně:
struct servent {
char *s_name; /* official service name */
char **s_aliases; /* alias list */
int s_port; /* port number */
char *s_proto; /* protocol to use */
}
Prvky struktury servent jsou:
- s_name
- Oficiální jméno služby.
- s_aliases
- Nulou ukončený seznam aliasů pro službu.
- s_port
- Číslo portu pro tuto službu. Je reprezentováno v síťovém pořadí bajtů.
- s_proto
- Jméno protokolu spojeného s touto službou.
Funkce getservent(), getservbyname() a getservbyport() vrací strukturu servent, nebo NULL, nastala-li chyba nebo konec souboru.
- /etc/services
- databáze služeb
Vysvětlení pojmů použitých v této části viz attributes(7)EN.
| Rozhraní | Atribut | Hodnota |
| getservent() | Thread safety | MT-Unsafe race:servent race:serventbuf locale |
| getservbyname() | Thread safety | MT-Unsafe race:servbyname locale |
| getservbyport() | Thread safety | MT-Unsafe race:servbyport locale |
| setservent(), endservent() | Thread safety | MT-Unsafe race:servent locale |
In the above table, servent in race:servent signifies that if any of the functions setservent(), getservent(), or endservent() are used in parallel in different threads of a program, then data races could occur.
POSIX.1-2001, POSIX.1-2008, 4.3BSD.