私の知る限り、(Linux で C++ で作成された) プログラムは__cxa_finalize
、メイン関数を終了するときに呼び出します。共有ライブラリを作成し、このライブラリをメイン関数で使用します。メイン プログラムがこのライブラリをロード/アンロードするときに、いくつかのアクションを実行したいと考えています。共有ライブラリを作成するときに、その目的で関数を使用できることがわかりました__attribute__
(この関数は、共有ライブラリコードに実装されると思います)
次のように追加しました:
void __attribute__ ((constructor)) my_load(void);
void __attribute__ ((destructor)) my_unload(void);
次のリンクのように関数 my_load と my_unload を実装しました: http://tdistler.com/2007/10/05/implementing-dllmain-in-a-linux-shared-library
問題は、メイン関数を終了するときにこれらの関数が正確にどの順序で処理されるかです。my_unload()
関数または__cxa_finalize
?