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