据我所知,一个程序(在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
?