getservent, getservbyname, getservbyport, setservent, endservent - odczytanie
wpisu dotyczącego usługi
Standardowa biblioteka 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);
Funkcja
getservent() odczytuje następny wpis z bazy danych
usług (patrz
services(5)) i zwraca strukturę
servent zawierającą pola powstałe z
rozłożenia pól wpisu. Połączenie do bazy
danych jest otwierane, jeśli jest to potrzebne.
Funkcja
getservbyname() zwraca strukturę
servent
zawierającą ten wpis z bazy danych, który odpowiada
usłudze
name korzystającej z protokołu
proto. Jeśli
proto jest równe NULL, to
pasował będzie dowolny protokół.
Połączenie do bazy danych jest otwierane, jeśli jest to
potrzebne.
Funkcja
getservbyport() zwraca strukturę
servent
zawierającą wartości tego wpisu z bazy danych,
który odpowiada portowi
port (podanemu w sieciowej
kolejności bajtów) dla protokołu
proto.
Jeśli
proto jest równe NULL, to pasował
będzie dowolny protokół. Połączenie do bazy
danych jest otwierane, jeśli jest to potrzebne.
Funkcja
setservent() otwiera połączenie do bazy danych i
ustawia wskaźnik następnego wpisu na pierwszy wpis. Jeśli
stayopen jest niezerowe, to połączenie do bazy danych nie
będzie zamykane pomiędzy wywołaniami funkcji
getserv*().
Funkcja
endservent() zamyka połączenie do bazy danych.
Struktura
servent jest zdefiniowana w
<netdb.h>
następująco:
struct servent {
char *s_name; /* oficjalna nazwa usługi */
char **s_aliases; /* lista aliasów */
int s_port; /* numer portu */
char *s_proto; /* używany protokół */
}
Polami struktury
servent są:
- s_name
- Oficjalna nazwa usługi.
- s_aliases
- Zakończona NULL-em lista alternatywnych nazw tej
usługi.
- s_port
- Numer portu tej usługi podany w sieciowej
kolejności bajtów.
- s_proto
- Nazwa protokołu z którego korzysta dana
usługa.
Funkcje
getservent(),
getservbyname() i
getservbyport()
zwracają wskaźnik do statycznej struktury
servent lub
wskaźnik NULL, gdy wystąpi błąd lub napotkany
zostanie koniec pliku.
- /etc/services
- plik bazy danych o usługach
Informacje o pojęciach używanych w tym rozdziale można
znaleźć w podręczniku
attributes(7).
Interfejs |
Atrybut |
Wartość |
getservent() |
Bezpieczeństwo wątkowe |
MT-Unsafe race:servent race:serventbuf locale |
getservbyname() |
Bezpieczeństwo wątkowe |
MT-Unsafe race:servbyname locale |
getservbyport() |
Bezpieczeństwo wątkowe |
MT-Unsafe race:servbyport locale |
setservent(), endservent() |
Bezpieczeństwo wątkowe |
MT-Unsafe race:servent locale |
W powyższej tabeli,
servent w
race:servent oznacza,
że jeśli któraś z funkcji
setservent(),
getservent() lub
endservent() jest używana
równolegle w różnych wątkach programu, może
nastąpić sytuacja wyścigu danych.
POSIX.1-2001, POSIX.1-2008, 4.3BSD.
getnetent(3),
getprotoent(3),
getservent_r(3),
services(5)
Autorami polskiego tłumaczenia niniejszej strony podręcznika
są: Andrzej Krzysztofowicz <
[email protected]>, Robert
Luberda <
[email protected]> i Michał Kułach
<
[email protected]>
Niniejsze tłumaczenie jest wolną dokumentacją.
Bliższe informacje o warunkach licencji można uzyskać
zapoznając się z
GNU
General Public License w wersji 3 lub nowszej. Nie przyjmuje się
ŻADNEJ ODPOWIEDZIALNOŚCI.
Błędy w tłumaczeniu strony podręcznika prosimy
zgłaszać na adres listy dyskusyjnej
[email protected]