16.6 dl -- 共有オブジェクトのC関数の呼び出し

Unixプラットフォームで利用できます。

dlモジュールはdlopen()関数へのインターフェースを 定義します。 これはダイナミックライブラリにハンドルするための Unixプラットフォーム上の最も一般的なインターフェースです。 そのライブラリの任意の関数を呼ぶプログラムを与えます。

警告: dlモジュールはPythonの型システムとエラー処理をバイパス しています。もし間違って使用すれば、セグメンテーションフォルト、 クラッシュ、その他の不正な動作を起こします。

注意: このモジュールはsizeof(int) == sizeof(long) == sizeof(char *) でなければ働きません。 そうでなければimportするときにSystemErrorが送出されるでしょう。

dlモジュールは次の関数を定義します:

open( name[, mode = RTLD_LAZY])
共有オブジェクトファイルを開いて、ハンドルを返します。 モードは遅延結合(RTLD_LAZY)または即時結合(RTLD_NOW) を表します。 デフォルトはRTLD_LAZYです。 いくつかのシステムはRTLD_NOWをサポートしていないことに 注意してください。

返り値はdlobjectです。

dlモジュールは次の定数を定義します:

RTLD_LAZY
open()の引数として使います。

RTLD_NOW
open()の引数として使います。 即時結合をサポートしないシステムでは、 この定数がモジュールに現われないことに注意してください。 最大のポータビリティを求めるならば、システムが即時結合をサポートする かどうかを決定するためにhasattr()を使用してください。

dlモジュールは次の例外を定義します:

exception error
動的なロードやリンクルーチンの内部でエラーが生じたときに送出される例外です。

例:

>>> import dl, time
>>> a=dl.open('/lib/libc.so.6')
>>> a.call('time'), time.time()
(929723914, 929723914.498)

この例はDebian GNU/Linuxシステム上で行なったもので、 このモジュールの使用はたいてい悪い選択肢であるという事実のよい例です。



Subsections
ご意見やご指摘をお寄せになりたい方は、 このドキュメントについて... をご覧ください。