オープンされたダイナミックライブラリを表すクラスです。
dlopen(3) が返すハンドラーのラッパーです。
sym(func) -> Integer
[permalink][rdoc]self[func] -> Integer
ライブラリのデフォルトの検索順序に従い、現在のライブラリ以降のシンボルを探します。
Fiddle::Handle::NEXT.sym(func) と同じです。詳しくは dlsym(3) の RTLD_NEXT を見てください。
new(lib, flags=Fiddle::Handle::RTLD_LAZY|Fiddle::Handle::RTLD_GLOBAL) -> Fiddle::Handle
[permalink][rdoc]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)) を参照してください。
例:
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]self[func] -> Integer
関数やグローバル変数 func へのポインタを取得し、整数として返します。
require 'fiddle' h = Fiddle::Handle.new('libc.so.6') p h.sym('strlen') # 関数ポインタのアドレスを整数で表示
close -> Integer
[permalink][rdoc]自身をクローズします。成功した場合は 0 を返します。そうでない場合は、 0 以外の整数を返します。
[SEE_ALSO] dlclose(3)
close_enabled? -> bool
[permalink][rdoc]GC によるオブジェクトの回収時に self をクローズする(Fiddle::Handle#close) かどうかを真偽値で返します。
[SEE_ALSO] Fiddle::Handle#enable_close, Fiddle::Handle#disable_close
disable_close -> nil
[permalink][rdoc]GC によるオブジェクトの回収時に self をクローズしない(Fiddle::Handle#close) ように設定します。
デフォルトでは close しません。
[SEE_ALSO] Fiddle::Handle#enable_close, Fiddle::Handle#close_enabled?
enable_close -> nil
[permalink][rdoc]GC によるオブジェクトの回収時に self をクローズする(Fiddle::Handle#close) ように設定します。
デフォルトでは close しません。
[SEE_ALSO] Fiddle::Handle#disable_close, Fiddle::Handle#close_enabled?
to_i -> Integer
[permalink][rdoc]自身が表すハンドル(dlopen(3) が返したもの)のアドレスを返します。
DEFAULT -> Fiddle::Handle
[permalink][rdoc]RTLD_DEFAULT で表わされる疑似ハンドルを表します。
詳しくは dlsym(3) を参照してください。
NEXT -> Fiddle::Handle
[permalink][rdoc]RTLD_NEXT で表わされる疑似ハンドルを表します。
詳しくは dlsym(3) を参照してください。
RTLD_GLOBAL -> Integer
[permalink][rdoc]dlopen のフラグ RTLD_GLOBAL を表す定数です。
DL::Handle.new の flags として用います。
詳しくは dlopen(3) を見てください。
RTLD_LAZY -> Integer
[permalink][rdoc]dlopen のフラグ RTLD_LAZY を表す定数です。
DL::Handle.new の flags として用います。
詳しくは dlopen(3) を見てください。
RTLD_NOW -> Integer
[permalink][rdoc]dlopen のフラグ RTLD_NOW を表す定数です。
DL::Handle.new の flags として用います。
詳しくは dlopen(3) を見てください。