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