\fBdlclose\fP() のいずれかで最後に発生したエラーについての説明メッセージを返す。
初期化後または前回呼び出された後で、エラーが発生していなければ NULL を返す。
.SS dlopen()
-関数 \fBdlopen\fP() は、NULL 終端された文字列 \fIfilename\fP で指定されたファイル名の動的ライブラリ (dynamic
+関数 \fBdlopen\fP() は、ヌル終端された文字列 \fIfilename\fP で指定されたファイル名の動的ライブラリ (dynamic
library) をロードし、 その動的ライブラリへの内部「ハンドル」を返す。 \fIfilename\fP が NULL
の場合、メイン・プログラムへのハンドルが返される。 \fIfilename\fP がスラッシュ ("/")
を含む場合、(相対か絶対かの)パス名として解釈される。 それ以外の場合、動的リンカは以下の手順でライブラリを検索する (詳細は \fBld.so\fP(8)
フラグ付きで既にオープンされているライブラリを使って解決される。 実行ファイルが "\-rdynamic" フラグ ("\-\-export\-dynamic"
も同義) 付きでリンクされている場合は、実行ファイル中のグローバルシンボルも、 動的にロードされるライブラリ内の参照解決に用いられる。
.PP
-å\90\8cã\81\98ã\83©ã\82¤ã\83\96ã\83©ã\83ªã\81\8c \fBdlopen\fP() ã\81«ã\82\88ã\81£ã\81¦å\86\8d度ã\83ã\83¼ã\83\89ã\81\95ã\82\8cã\81\9få ´å\90\88ã\81«ã\81¯ã\80\81å\90\8cã\81\98ã\83\95ã\82¡ã\82¤ã\83«ハンドルが返される。 dl
+å\90\8cã\81\98ã\83©ã\82¤ã\83\96ã\83©ã\83ªã\81\8c \fBdlopen\fP() ã\81«ã\82\88ã\81£ã\81¦å\86\8d度ã\83ã\83¼ã\83\89ã\81\95ã\82\8cã\81\9få ´å\90\88ã\81«ã\81¯ã\80\81å\90\8cã\81\98ã\83©ã\82¤ã\83\96ã\83©ã\83ªハンドルが返される。 dl
ライブラリはライブラリハンドルのリンク数を管理している。 したがって動的ライブラリは \fBdlclose\fP() が \fBdlopen\fP()
と同じ回数だけ呼び出されない限りアンロードされない。 \fB_init\fP() ルーチンは一度だけ呼び出される (\fB_init\fP()
が存在する場合のみ)。 \fBRTLD_NOW\fP が指定されて \fBdlopen\fP() が呼び出された場合、 \fBRTLD_LAZY\fP
cosine = (double (*)(double)) dlsym(handle, "cos");
- /* According to the ISO C standard, casting between function
- pointers and 'void *', as done above, produces undefined results.
- POSIX.1\-2003 and POSIX.1\-2008 accepted this state of affairs and
- proposed the following workaround:
+ /* ISO の C 標準によれば、上のような、関数ポインタと 'void *' 間の
+ キャストを行った場合に得られる結果は不定である。
+ POSIX.1\-2003 と POSIX.1\-2008 では、この状況は認められており、
+ 以下のようなワークアラウンドが提案されている。
*(void **) (&cosine) = dlsym(handle, "cos");
- This (clumsy) cast conforms with the ISO C standard and will
- avoid any compiler warnings.
+ この (ぶかっこうな) キャストは ISO の C 標準に従っており、
+ コンパイラの警告を避けることができる。
.\" http://pubs.opengroup.org/onlinepubs/009695399/functions/dlsym.html#tag_03_112_08
.\" http://pubs.opengroup.org/onlinepubs/9699919799/functions/dlsym.html#tag_16_96_07
.\" http://austingroupbugs.net/view.php?id=74
- The 2013 Technical Corrigendum to POSIX.1\-2008 (a.k.a.
- POSIX.1\-2013) improved matters by requiring that conforming
- implementations support casting 'void *' to a function pointer.
- Nevertheless, some compilers (e.g., gcc with the '\-pedantic'
- option) may complain about the cast used in this program. */
+ POSIX.1\-2008 の 2013 Technical Corrigendum (別名 POSIX.1\-2013)
+ では、 POSIX に準拠する実装では 'void *' から関数ポインタへの
+ キャストをサポートすることが要求されるようになり、状況が改善
+ された。にもかかわらず、('\-pedantic' オプションを指定した gcc
+ などの) いくつかのコンパイラは、このプログラムで使用されている
+ キャストについて文句を言うのだ。
error = dlerror();
if (error != NULL) {
ld.so info pages, gcc info pages, ld info pages
.SH この文書について
-この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.64 の一部
+この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.67 の一部
である。プロジェクトの説明とバグ報告に関する情報は
http://www.kernel.org/doc/man\-pages/ に書かれている。