GETPROTOENT(3)

名称
getprotoent, getprotobynumber, getprotobyname, setprotoent, endprotoent - プロトコルエントリの取得

ライブラリ
libc

書式
<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(), getprotobyname(), および getprotobynumber() 関数はそれぞれ、次に示す構造を持つオブジェクトへのポインタを返します。 構造体には、ネットワークプロトコルデータベース /etc/protocols にある行の内訳フィールドが含まれます。

    struct  protoent {
            char    *p_name;        /* プロトコルのオフィシャル名 */
            char    **p_aliases;    /* エイリアスリスト */
            int     p_proto;        /* プロトコル番号 */
    };

この構造体のメンバは次のとおりです。

p_name
    プロトコルのオフィシャル名。

p_aliases
    プロトコルの別名 (エイリアス) の 0 で終わるリスト。

p_proto
    プロトコル番号。

getprotoent() 関数は、ファイルの次の行を読み込みます。 この際、必要ならばファイルをオープンします。

setprotoent() 関数は、ファイルをオープンしてリワインドします。 stayopen フラグが 0 でなければ、 getprotobyname() または getprotobynumber() のそれぞれの呼び出しの後でも、ネットデータベースはクローズされません。

endprotoent() 関数はファイルをクローズします。

getprotobyname() および getprotobynumber() 関数は、適合するプロトコル名またはプロトコル番号が見つかるか、または EOF に達するまで、ファイルを最初から順次検索します。

戻り値
EOF またはエラーで Null ポインタ (0) が返ります。

関連ファイル
/etc/protocols

関連項目
protocols(5)

歴史
getprotoent(), getprotobynumber(), getprotobyname(), setprotoent() および endprotoent() 関数は 4.2BSD で登場しました。

バグ
これらの関数は静的データ空間を使用します。 後でこのデータを使用する必要があれば、以後のこれらの関数の呼び出しで データが上書きされる前に、コピーして保存する必要があります。 なお、プロトコルデータとして受け入れるのは現在、 インターネットプロトコルだけです。