日本語 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.3-RELEASE-K, 13.0-RELEASE-K から 13.2-RELEASE-K は、全翻訳済み)
13.3-STABLE-K, 15.0-CURRENT-K は現在、作成中で日々更新されています。
Table of Contents
DLINFO(3) FreeBSD ライブラリ関数マニュアル DLINFO(3) 名称 dlinfo -- ダイナミックにロードしたオブジェクトに関する情報 ライブラリ 標準 C ライブラリ (libc, -lc) 書式 #include <link.h> #include <dlfcn.h> int dlinfo(void * restrict handle, int request, void * restrict p); 解説 dlinfo() 関数は、ダイナミックにロードしたオブジェクトに関する情報を提供し ます。dlinfo() および正確な意味によってとられる動作、および p 引数のタイ プは、呼び出し側によって提供される request 引数の値に依存します。 handle (ハンドル) 引数は dlopen(3) 関数呼び出しから返された値あるいは特別 のハンドル RTLD_SELF のいずれかです。handle (ハンドル) が dlopen(3) 呼び 出しから返される値である場合、dlinfo() 関数によって返された情報は指定され たオブジェクトに関係します。ハンドルが特別のハンドル RTLD_SELF である場 合、返された情報は呼び出し側自体に関係します。 request 引数に対するあり得る値は次のとおりです。 RTLD_DI_LINKMAP 指定された handle (ハンドル) のための Link_map (struct link_map) 構造体ポインタを検索します。成功したリターンにおいては、p 引数 は、handle (ハンドル) 引数によって指定された、共有オブジェクトに ついて記述する、Link_map 構造体 (Link_map **p) へのポインタで満た されます。Link_map 構造体は、dlopen(3) と dlclose(3) が呼ばれる、 同じ順序で ld.so(1) によってダブルリンクしたリストとして維持され ます。使用例の例 1 を参照してください Link_map 構造体は <link.h> で定義され、次のメンバがあります: caddr_t l_addr; /* ライブラリのベースアドレス */ const char *l_name; /* ライブラリへの絶対パス */ const void *l_ld; /* メモリ中の .dynamic へのポインタ */ struct link_map *l_next, /* マップライブラリのリンクリスト */ *l_prev; l_addr オブジェクトのベースアドレスはメモリへロードしました。 l_name ロードした共有オブジェクトのフルネーム。 l_ld メモリにロードされた動的リンク情報セグメント (PT_DYNAMIC) のアドレス。 l_next リンクマップリストでの次の Link_map 構造体。 l_prev リンクマップリストでの前の Link_map 構造体。 RTLD_DI_SERINFO 与えられた handle (ハンドル) 引数に関連したライブラリ検索パスを検 索します。p 引数は Dl_serinfo 構造体バッファ (Dl_serinfo *p) を指 すべきです。Dl_serinfo 構造体は RTLD_DI_SERINFOSIZE リクエストで 最初に初期化しなければなりません。 返された Dl_serinfo 構造体は dls_cnt Dl_serpath エントリを含んで います。各エントリの dlp_name フィールドは検索パスを指します。対 応する dlp_info フィールドは、パスの出所を示す、より多くのフラグ のうちの 1 つを含んでいます (<link.h> ヘッダファイルに定義された LA_SER_* フラグを参照)。使用法の例については、使用例の例 2 を参照 してください。 RTLD_DI_SERINFOSIZE RTLD_DI_SERINFO リクエストで使用される Dl_serinfo 構造体を初期化 します。dls_cnt と dls_size の両方のフィールドはハンドルに適用可 能な検索パスの数、および dls_cnt Dl_serpath エントリを保持するの に要求される Dl_serinfo バッファのサイズの合計および関連する検索 パス文字列を示すために返されます。使用法の例については、使用例の 例 2 を参照してください。 RTLD_DI_ORIGIN ハンドルに関連した動的なオブジェクトの出所を検索します。成功した リターンでは p 引数は char ポインタ (char *p) で満たされます。 戻り値 dlinfo() 関数は成功すれば 0 を返します。エラーが生じた場合、-1 を返しま す。エラーが検出された場合は常に、それを詳述するメッセージは dlerror(3) への呼び出しによって検索できます。 使用例 例 1: Link_map 構造体を検索するために dlinfo() を使用します。 次の例は、動的なライブラリが呼び出し側の一つの後にロードした共有ライブラ リのリストをどのように検出することができるかを示します。単純にするため に、エラーチェックは省略されています。 Link_map *map; dlinfo(RTLD_SELF, RTLD_DI_LINKMAP, &map); while (map != NULL) { printf("%p: %s\n", map->l_addr, map->l_name); map = map->l_next; } 例 2: ライブラリ検索パスを検索するために dlinfo() を使用します。 次の例は、動的なオブジェクトが dlopen(3) で単純なファイル名を位置付けるた めに使用されるライブラリ検索パスをどのように検査することができるか示しま す。単純にするために、エラーチェックは省略されています。 Dl_serinfo _info, *info = &_info; Dl_serpath *path; unsigned int cnt; /* determine search path count and required buffer size */ dlinfo(RTLD_SELF, RTLD_DI_SERINFOSIZE, (void *)info); /* allocate new buffer and initialize */ info = malloc(_info.dls_size); info->dls_size = _info.dls_size; info->dls_cnt = _info.dls_cnt; /* obtain sarch path information */ dlinfo(RTLD_SELF, RTLD_DI_SERINFO, (void *)info); path = &info->dls_serpath[0]; for (cnt = 1; cnt <= info->dls_cnt; cnt++, path++) { (void) printf("%2d: %s\n", cnt, path->dls_name); } 関連項目 rtld(1), dladdr(3), dlopen(3), dlsym(3) 歴史 dlinfo() 関数は、Solaris オペレーティングシステムではじめて登場しました。 FreeBSD では FreeBSD 4.8 ではじめて登場しました。 作者 dlinfo() 関数の FreeBSD 実装は、Alexey Zelkin <phantom@FreeBSD.org> に よって最初に書かれ、後に Alexander Kabaev <kan@FreeBSD.org> によって拡張 され改善されました。 この関数のためのマニュアルページは、Alexey Zelkin <phantom@FreeBSD.org> によって書かれました。 FreeBSD 11.2 February 14, 2003 FreeBSD 11.2