class DL::Handle
クラスの継承リスト: DL::Handle < Object < Kernel < BasicObject
要約
オープンされたダイナミックライブラリを表すクラスです。 dlopen(3) が返すハンドラーのラッパーです。
特異メソッド
new(lib) -> DL::Handle
new(lib) {|handle| ... } -> DL::Handle
-
ライブラリ lib をオープンし、Handle オブジェクトとして返します。
ブロックを指定すれば、生成した Handle を引数としてブロックを実行します。 Handle はブロックの終りで自動的にクローズされます。
- [PARAM] lib:
- ライブラリを文字列で指定します。
例:
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) -> Integer
self[func] -> Integer
-
関数やグローバル変数 func へのポインタを取得し、整数として返します。
- [PARAM] func:
- 得たいシンボルの名前を文字列で与えます。
- [EXCEPTION] RuntimeError:
- シンボルが見つからなかった時に発生します。
例:
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 以外の整数を返します。
enable_close -> nil
disable_close -> nil
-
GC によるオブジェクトの回収時に自身をクローズするかどうかを指定します。
to_i -> Integer
-
自身が表すハンドル(dlopen(3) が返したもの)のアドレスを返します。
class DL::Handle