はじめまして。
前岡と申します。

現在、とあるCで書かれたライブラリ(公開できるものではありません)を
ラップする拡張モジュールを設計しています。

色々ドキュメント(元祖Ruby本、Ruby Hacking Guideなど)を参照したのですが、
これだという記述が見つからなくて困っています。

拡張モジュールをロードする時に呼ばれる関数エントリとして
「Init_ライブラリ名()」が提供されていると理解していますが、
アンロード(プロセス終了直前?)する時に呼ぶような関数エントリは
提供されていないのでしょうか?

関数エントリではなく、アンロード時に呼ばれる関数を定義できるような
機能が拡張モジュール内で呼べれば、それでよいです。


こちらの目論見としては以下の通りです。
・ラップ対象のライブラリはプロセス起動時からメソッド使用時までに
  init()を1回だけ呼ぶ必要がある。
・ラップ対象のライブラリはプロセス終了時にはexit()を1回だけ
  呼ぶ必要がある。
・これらを拡張モジュールのロード/アンロード時におこない
  init(), exit()を意識させない作りにしたい。


駄目な場合は、init(), exit()を特異メソッド(クラスメソッド)として提供して、
END文でexit()を呼びだすか、begin..end節で囲ってensureでexit()を呼び出そ
うかな、と思っています。


皆さんの御意見をお聞かせください。


---
maeoka