class DL::Handle
クラスの継承リスト: DL::Handle < Object < Kernel < BasicObject
要約
オープンされたダイナミックライブラリを表すクラスです。 dlopen(3) が返すハンドラーのラッパーです。
目次
- 特異メソッド
- [] sym new
- インスタンスメソッド
- [] sym close close_enabled? disable_close enable_close to_i
- 定数
- DEFAULT NEXT
特異メソッド
sym(func) -> Integerself[func] -> Integer-
ライブラリのデフォルトの検索順序に従い、現在のライブラリ以降の シンボルを探します。
DL::Handle::NEXT.sym(func) と同じです。詳しくは dlsym(3) の RTLD_NEXT を見てください。
- [EXCEPTION] DL::DLError:
- シンボルが見つからなかった時に発生します。
new(lib, flags=DL::RTLD_LAZY|DL::RTLD_GLOBAL) -> DL::Handlenew(lib, flags=DL::RTLD_LAZY|DL::RTLD_GLOBAL) {|handle| ... } -> DL::Handle-
ライブラリ lib をオープンし、Handle オブジェクトとして返します。
ブロックを指定すれば、生成した Handle を引数としてブロックを実行します。 Handle はブロックの終りで自動的にクローズされます。
flags で dlopen(3) の第2引数として渡すフラグを指定できます。 DL::RTLD_LAZY、DL::RTLD_NOW のどちらか一方を指定する必要があり、 またそれに DL::RTLD_GLOBAL と OR を取ることができます。 詳しい意味は manpage(dlopen(3)) を参照してください。
- [PARAM] lib:
- ライブラリを文字列で指定します。
- [PARAM] flags:
- フラグ
- [EXCEPTION] DL::DLError:
- ライブラリのオープンに失敗した場合に発生します
例:
require 'dl' h = DL::Handle.new('libc.so.6') i = h.sym('strlen') #=> 3085201584 cfunc = DL::CFunc.new(i, DL::TYPE_INT, 'strlen') p cfunc.call(['abcde'].pack('p*').unpack('l!*')) #=> 5
インスタンスメソッド
sym(func) -> Integerself[func] -> Integer-
関数やグローバル変数 func へのポインタを取得し、整数として返します。
- [PARAM] func:
- 得たいシンボルの名前を文字列で与えます。
- [EXCEPTION] DL::DLError:
- シンボルが見つからなかった時に発生します。
例:
require 'dl' h = DL::Handle.new('libc.so.6') i = h.sym('strlen') p i #=> 3085201584 cfunc = DL::CFunc.new(i, DL::TYPE_INT, 'strlen') p cfunc.call(['abcde'].pack('p*').unpack('l!*')) #=> 5
close -> Integer-
自身をクローズします。成功した場合は 0 を返します。そうでない場合は、 0 以外の整数を返します。
[SEE_ALSO] dlclose(3)
close_enabled? -> bool-
GC によるオブジェクトの回収時に self をクローズする(DL::Handle#close) かどうかを真偽値で返します。
[SEE_ALSO] DL::Handle#enable_close, DL::Handle#disable_close
disable_close -> nil-
GC によるオブジェクトの回収時に self をクローズしない(DL::Handle#close) ように設定します。
デフォルトでは close しません。
[SEE_ALSO] DL::Handle#enable_close, DL::Handle#close_enabled?
enable_close -> nil-
GC によるオブジェクトの回収時に self をクローズする(DL::Handle#close) ように設定します。
デフォルトでは close しません。
[SEE_ALSO] DL::Handle#disable_close, DL::Handle#close_enabled?
to_i -> Integer-
自身が表すハンドル(dlopen(3) が返したもの)のアドレスを返します。
定数
DEFAULT -> DL::Handle-
RTLD_DEFAULT で表わされる疑似ハンドルを表します。
詳しくは dlsym(3) を参照してください。
NEXT -> DL::Handle-
RTLD_NEXT で表わされる疑似ハンドルを表します。
詳しくは dlsym(3) を参照してください。