共有ライブラリでは、関数 func1() に atexit(terminate_global) があり、この共有ライブラリには「属性((コンストラクタ))」と「属性((デストラクタ))」
がありません。
したがって、プログラム フローは次のようになります。
1) アプリケーションは、dlopen を使用して共有ライブラリを読み込みます。
2) アプリケーションは、dlsym を使用して func1() を呼び出します。
3) func1() には atexit(terminate_global) があります。
4) func1() が戻ります。
5) アプリケーションは dlclose を呼び出して、ライブラリの割り当てを解除します。
上記の手順では、ライブラリがアンロードされたときに atexit() が呼び出されていません。では、共有ライブラリの割り当てを解除するときに atexit() を呼び出す必要がある場合、正しい方法は何でしょうか? atexit 登録関数を呼び出せるように、属性((コンストラクタ)) および属性((デストラクタ)) 関数属性を使用してルーチンをエクスポートする必要がありますか?