スポンサーリンク

GETSERVENT(3) FreeBSD ライブラリ関数マニュアル GETSERVENT(3)

名称

getservent, getservbyport, getservbyname, setservent, endservent − サービ スエントリの取得

ライブラリ

標準 C ライブラリ (libc, −lc)

書式

#include <netdb.h>

struct servent *

getservent();

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

      struct  servent {
              char    *s_name;        /* サービスのオフィシャル名 */
              char    **s_aliases;    /* エイリアスリスト */
              int     s_port;         /* サービスが常駐するポート */
              char    *s_proto;       /* 使用するプロトコル */
      };

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

       s_name

サービスのオフィシャル名。

s_aliases
サービスの別名 (エイリアス) の 0 で終るリスト。

s_port
サービスが存在するポート番号。ポート番号はネットワークバイト オーダで返されます。

s_proto
サービスとのコンタクト中に使用するプロトコル名。

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

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

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

getservbyname() および getservbyport() 関数は、適合するプロトコル名または ポート番号 (これはネットワークバイトオーダで指定されなければなりません) が見つかるか、さもなければ EOF に達するまで、ファイルを最初から順次検索し ます。プロトコル名が与えられていても ( NULL でなくても)、検索は適合するプ ロトコルが見つかるまで続けられます。

関連ファイル

       /etc/services

診断

EOF またはエラーの場合、 Null ポインタ (0) が返ります。

関連項目

getprotoent(3), services(5)

歴史

getservent(), getservbyport(), getservbyname(), setservent() および endservent() 関数は、 4.2BSD で登場しました。

バグ

これらの関数は静的データ記憶域を使用します。後でこのデータを使用する必要 があれば、以後のこれらの関数呼び出しでデータが上書きされる前に、コピーし て保存する必要があります。ポート番号がすべて 32 ビットに適合すると期待す るのは、たぶん素朴過ぎます。

FreeBSD 10.0 July 9, 1995 FreeBSD 10.0

スポンサーリンク