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() 関数は、
プロトコル
proto
を用いるサービスの名前
name
にマッチするエントリーをデータベースから探し、
そのエントリーを収めた
servent 構造体を返す。
proto が NULL
の場合は、任意のプロトコルにマッチする。
必要であれば、データベースへの接続がオープンされる。
getservbyport() 関数は、
プロトコル
proto
を用いるサービスのポート番号
port
にマッチするエントリーをデータベースから探し、
そのエントリーの内容を収めた
servent 構造体を返す
(ポート番号
port
はネットワークバイトオーダで指定する)。
proto が NULL
の場合は任意のプロトコルにマッチする。
必要であれば、データベースへの接続がオープンされる。
setservent()
関数はデータベースへの接続をオープンし、
次の読み込みエントリーを先頭のエントリーに設定する。
stayopen が 0 でない場合、
一つ一つの
getserv*()
関数の呼び出し間でデータベースへの接続をクローズしない。
endservent()
関数はデータベースへの接続をクローズする。
servent 構造体は
<netdb.h>
で以下のように定義されている。
struct servent {
char *s_name; /* official service name */
char **s_aliases; /* alias list */
int s_port; /* port number */
char *s_proto; /* protocol to use */
}
servent
構造体のメンバーは以下の通り。
- s_name
- サービスの正式名
(official name)。
- s_aliases
- サービスの別名のリスト。
リストはヌルで終端される。
- s_port
- サービスのポート番号。ネットワークバイトオーダで指定される。
- s_proto
- このサービスと共に用いるプロトコルの名前。
getservent(),
getservbyname(),
getservbyport()
関数は、
静的に割り当てられた
servent
構造体へのポインターを返す。
エラーが起こったり、ファイルの末尾に達した場合は
NULL を返す。
- /etc/services
- サービスのデータベースファイル
この節で使用されている用語の説明は
attributes(7) を参照のこと。
Interface |
Attribute |
Value |
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.
getnetent(3),
getprotoent(3),
getservent_r(3),
services(5)
この man ページは Linux
man-pages
プロジェクトのリリース
5.10
の一部である。プロジェクトの説明とバグ報告に関する情報は
https://www.kernel.org/doc/man-pages/
に書かれている。