日本語 man コマンド類 (ja-man-1.1j_5) と日本語 man ドキュメント (ja-man-doc-5.4 (5.4-RELEASE 用) など) をインストールすると、以下のような man コマンド閲覧、キーワード検索が コンソールからできるようになります。
4.11-RELEASE-K, 5.4-RELEASE-K, 5.5-RELEASE-K, 6.0-RELEASE-K から 6.4-RELEASE-K, 7.0-RELEASE-K から 7.4-RELEASE-K, 8.0-RELEASE-K から 8.4-RELEASE-K, 9.0-RELEASE-K から 9.3-RELEASE-K, 10.0-RELEASE-K から 10.3-RELEASE-K, 11.0-RELEASE-K から 11.4-RELEASE-K, 12.0-RELEASE-K, 12.1-RELEASE-K は、 プライベート版 (小金丸が編集してまとめたもの) ですが、 より多くの翻訳したファイルが含まれています。 (5.4-RELEASE-K から 6.4-RELEASE-K, 7.0-RELEASE-K から 7.4-RELEASE-K, 8.0-RELEASE-K から 8.4-RELEASE-K, 9.0-RELEASE-K から 9.3-RELEASE-K, 10.0-RELEASE-K から 10.3-RELEASE-K, 11.0-RELEASE-K から 11.4-RELEASE-K, 12.0-RELEASE-K から 12.4-RELEASE-K, 13.0-RELEASE-K から 13.3-RELEASE-K, 14.0-RELEASE-K から 14.1-RELEASE-K は、全翻訳済み)
13.3-STABLE-K, 15.0-CURRENT-K は現在、作成中で日々更新されています。
Table of Contents
GETHOSTBYNAME(3) FreeBSD ライブラリ関数マニュアル GETHOSTBYNAME(3)
名称
gethostbyname, gethostbyname2, gethostbyaddr, gethostent, sethostent,
endhostent, herror, hstrerror, gethostbyname_r, gethostbyname2_r,
gethostbyaddr_r -- ネットワークホストのエントリを取得する
ライブラリ
標準 C ライブラリ (libc, -lc)
書式
#include <netdb.h>
int h_errno;
struct hostent *
gethostbyname(const char *name);
struct hostent *
gethostbyname2(const char *name, int af);
struct hostent *
gethostbyaddr(const void *addr, socklen_t len, int af);
struct hostent *
gethostent(void);
void
sethostent(int stayopen);
void
endhostent(void);
void
herror(const char *string);
const char *
hstrerror(int err);
int
gethostbyname_r(const char *name, struct hostent *he, char *buffer,
size_t buflen, struct hostent **result, int *h_errnop);
int
gethostbyname2_r(const char *name, int af, struct hostent *he,
char *buffer, size_t buflen, struct hostent **result, int *h_errnop);
int
gethostbyaddr_r(const void *addr, socklen_t len, int af,
struct hostent *hp, char *buf, size_t buflen,
struct hostent **result, int *h_errno, p);
解説
getaddrinfo(3) と getnameinfo(3) 関数は、gethostbyname(),
gethostbyname2() と gethostbyaddr() 関数よりも優先されます。
gethostbyname(), gethostbyname2() と gethostbyaddr() 関数は、それぞれ、名
前で参照されるか、またはアドレスによって参照されるインターネットホストに
ついて記述する次の構造体があるオブジェクトへのポインタを返します。
gethostbyname() または gethostbyname2() に渡される name 引数は、ヌル文字
で終了するホスト名を指すべきです。gethostbyaddr() に渡される addr 引数
は、バイナリ形式の len バイト長のアドレスを指すべきです (すなわち、人間に
読み込み可能な ASCII 形式の IP アドレスではない)。af 引数は、このアドレス
のアドレスファミリ (例えば、AF_INET, AF_INET6、その他) を指定します。
返される構造体は、ネームサーバから取得した情報、/etc/hosts の行から切り離
されたフィールド、または yp(8) システムによって供給されたデータベースエン
トリのいずれかを含んでいます。検索の順序は、nsswitch.conf(5) の `hosts'
エントリによって制御されます。
struct hostent {
char *h_name; /* ホストの正式名 */
char **h_aliases; /* 別名リスト */
int h_addrtype; /* ホストアドレスのタイプ */
int h_length; /* アドレスの長さ */
char **h_addr_list; /* ネームサーバからアドレスのリスト */
};
#define h_addr h_addr_list[0] /* アドレス, 後方互換性のため */
この構造体のメンバは、次の通りです:
h_name ホストの正式名。
h_aliases ホストのための代替の名前の NULL で終了する配列。
h_addrtype 返されるアドレスのタイプ。通常、AF_INET。
h_length アドレスのバイト単位の長さ。
h_addr_list ホストのためのネットワークアドレスの NULL で終了する配列。ホ
ストアドレスは、ネットワークバイト順で返されます。
h_addr h_addr_list の最初のアドレス。これは、後方互換性のためです。
ネームサーバを使用するとき、gethostbyname() と gethostbyname2() は、名前
がドットで終わっていないなら、現在のドメインと親のドメインの指定されたホ
ストを検索します。名前にドットが含まれていないなら、そして環境変数
``HOSTALIASES'' に別名ファイルの名前が含まれているなら、別名ファイルは、
最初に入力名と一致する別名を検索されます。ドメイン検索手続きと別名ファイ
ルの形式については、hostname(7) を参照してください。
gethostbyname2() 関数は、例えば、AF_INET6 のための AF_INET 以外のアドレス
ファミリで検索を可能にすることを目的としている、gethostbyname() の発展形
です。
sethostent() 関数は、問い合わせのために接続された TCP ソケットの使用を要
求するために使用されます。問い合わせは、デフォルトで UDP データグラムを使
用します。stayopen フラグが 0 でないなら、ネームサーバへの TCP 接続が使用
されます。それは、gethostbyname(), gethostbyname2() または
gethostbyaddr() への呼び出しが完了した後に、オープンされたままとなりま
す。
endhostent() 関数は、TCP 接続をクローズします。
herror() 関数は、文字列引数 string、定数文字列 ": " と h_errno の値に対応
するメッセージから成る診断出力へのメッセージを書き込みます。
hstrerror() 関数は、err 引数の値に対応するメッセージテキストである文字列
を返します。
_r 接尾辞が付いた関数は、それらのそれぞれの対応する関数の再入可能なバー
ジョンを提供しています。呼び出し側は、次の 5 つの追加パラメータを供給しな
ければなりません: 成功時に記入される struct hostent 変数、buflen の
buffer バイトのサイズ、成功時に結果を指す struct hostent result 変数か、
または失敗時に、NULL に設定されるか、または名前が見つからないなら。
h_errnop 変数は、もしあるなら、エラーコードが入れられます。すべてのこれら
の関数は、成功すると 0 を返します。
関連ファイル
/etc/hosts
/etc/nsswitch.conf
/etc/resolv.conf
使用例
特定の IP アドレスに関連しているホスト名を印刷 (表示) します。
const char *ipstr = "127.0.0.1";
struct in_addr ip;
struct hostent *hp;
if (!inet_aton(ipstr, &ip))
errx(1, "can't parse IP address %s", ipstr);
if ((hp = gethostbyaddr((const void *)&ip,
sizeof ip, AF_INET)) == NULL)
errx(1, "no name associated with %s", ipstr);
printf("name associated with %s is %s\n", ipstr, hp->h_name);
診断
gethostbyname(), gethostbyname2() と gethostbyaddr() からのエラーリターン
状態は、NULL ポインタが返ることによって示されます。整数 h_errno は、次
に、これが、一時的な失敗か、無効または未知のホスト名かどうかを調べるため
にチェックされます。失敗を記述するエラーメッセージをプリントするために、
ルーチン herror() を使用することができます。引数 string が NULL でないな
ら、コロンと空白を続けて印刷 (表示) されます。エラーメッセージは、終端の
改行を付けて印刷 (表示) されます。
変数 h_errno は、次の値を持つことができます:
HOST_NOT_FOUND そのようなホストは、知られていません。
TRY_AGAIN これは、通常、一時的なエラーで、ローカルサーバが信頼でき
るサーバからの応答を受け取らなかったことを意味します。し
ばらく経ってからの再試行は、成功するかもしれません。
NO_RECOVERY ある予期しないサーバの失敗に遭遇しました。これは、回復不
可能なエラーです。
NO_DATA 要求された名前は、有効ですが、IP アドレスがありません。こ
れは、一時的エラーではありません。これは、名前がネーム
サーバに知られているが、この名前に関連したアドレスがない
ことを意味します。このドメイン名を使用するネームサーバへ
の別のタイプの要求は、答えをもたらします。例えば、メール
発送者は、このドメインのために登録されます。
関連項目
getaddrinfo(3), getnameinfo(3), inet_aton(3), resolver(3), hosts(5),
hostname(7)
歴史
herror() 関数は、4.3BSD で登場しました。endhostent(), gethostbyaddr(),
gethostbyname(), gethostent() と sethostent() 関数は、4.2BSD で登場しまし
た。gethostbyname2() 関数は、BIND バージョン 4.9.4 ではじめて登場しまし
た。
警告
標準 C ライブラリ (libc, -lc) がネームサーバでなく、/etc/hosts で検索する
ためのルーチンのみを使用して構築されたとき、gethostent() 関数は、定義さ
れ、sethostent() と endhostent() は、再定義されます。
gethostent() 関数は、必要ならば、ファイルをオープンして、/etc/hosts の次
の行を読み込みます。
sethostent() 関数は、ファイル /etc/hosts をオープンするか、またはリワイン
ドします。stayopen 引数が 0 でないなら、ファイルは、gethostbyname(),
gethostbyname2() または gethostbyaddr() のそれぞれの呼び出しの後に、ク
ローズされません。
endhostent() 関数は、ファイルをクローズします。
バグ
これらの関数は、スレッド特有のデータ記憶域を使用します。データが将来の使
用のための必要とされるなら、それは、あらゆる以後の呼び出しがそれを上書き
する前に、コピーされるべきです。
これらの関数は、スレッドセーフですが、いまだに、代わりに getaddrinfo(3)
関数ファミリを使用することをお勧めします。
インターネットアドレス形式だけが現在解釈されます。
FreeBSD 13.2 June 27, 2022 FreeBSD 13.2