getprotoent, getprotobyname, getprotobynumber, setprotoent, endprotoent -
プロトコルのエントリーを取得する
#include <netdb.h>
struct protoent *getprotoent(void);
struct protoent *getprotobyname(const char *name);
struct protoent *getprotobynumber(int proto);
void setprotoent(int stayopen);
void endprotoent(void);
getprotoent()
関数は、プロトコルのデータベース
(
protocols(5) 参照)
から次のエントリーを読み込み、
そのエントリーを
protoent
構造体の要素別のフィールドに格納し、
その構造体を返す。
必要であれば、データベースへの接続がオープンされる。
getprotobyname()
関数は、プロトコル名
name
にマッチするエントリーを
データベースから探し、そのエントリーを収めた
protoent 構造体を返す。
必要であれば、データベースへの接続がオープンされる。
getprotobynumber()
関数は、プロトコル番号
number
にマッチするエントリーを
データベースから探し、そのエントリーを収めた
protoent 構造体を返す。
必要であれば、データベースへの接続がオープンされる。
setprotoent()
関数はデータベースへの接続をオープンし、
次の読み込みエントリーを先頭のエントリーに設定する。
stayopen が 0 でない場合、
一つ一つの
getproto*()
関数の呼び出し間でデータベースへの接続をクローズしない。
endprotoent()
関数はデータベースへの接続をクローズする。
protoent 構造体は
<netdb.h>
で以下のように定義されている。
struct protoent {
char *p_name; /* official protocol name */
char **p_aliases; /* alias list */
int p_proto; /* protocol number */
}
protoent
構造体のメンバーは以下の通り。
- p_name
- プロトコルの正式名
(official name)。
- p_aliases
- プロトコルの別名のリスト。
リストはヌルで終端される。
- p_proto
- プロトコルの番号
getprotoent(),
getprotobyname(),
getprotobynumber()
関数は、静的に割り当てられた
protoent
構造体へのポインターを返す。
エラーが起こったり、ファイルの最後に達した場合は
NULL を返す。
- /etc/protocols
- プロトコルのデータベースファイル
この節で使用されている用語の説明は
attributes(7) を参照のこと。
Interface |
Attribute |
Value |
getprotoent() |
Thread safety |
MT-Unsafe race:protoent race:protoentbuf locale |
getprotobyname() |
Thread safety |
MT-Unsafe race:protobyname locale |
getprotobynumber() |
Thread safety |
MT-Unsafe race:protobynumber locale |
setprotoent(), endprotoent() |
Thread safety |
MT-Unsafe race:protoent locale |
In the above table,
protoent in
race:protoent signifies that if
any of the functions
setprotoent(),
getprotoent(), or
endprotoent() 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_r(3),
getservent(3),
protocols(5)
この man ページは Linux
man-pages
プロジェクトのリリース
5.10
の一部である。プロジェクトの説明とバグ報告に関する情報は
https://www.kernel.org/doc/man-pages/
に書かれている。