函数
GLibatexit
弃用:2.32
声明 [src]
void
g_atexit (
GVoidFunc func
)
描述 [src]
指定正常程序终止时要调用的函数。
自 GLib 2.8.2 以来,在 Windows 中g_atexit()
实际上是映射到对 C 库中atexit()
函数的调用的预处理器宏。这意味着如果调用 g_atexit() 的代码(即 atexit())位于DLL 中,则当 DLL 从程序中分离时将调用该函数。这通常比在 GLib DLL 分离时调用函数更有意义,而出现这种情况发生在g_atexit()
是 GLib DLL 中的函数时。
atexit()
在动态加载模块的上下文中的行为未正式规定,并且差异很大。
在 POSIX 系统中,在动态加载模块中调用g_atexit()
(或 atexit()),而在程序终止之前卸载该模块很可能会导致程序退出时崩溃。
一些 POSIX 系统实现atexit()
类似于 Windows,并且让每个动态加载的模块维护自己的 atexit 链,在模块卸载时调用该链。
在其他 POSIX 系统上,在卸载动态加载的模块之前,将调用该模块中注册的 atexit 函数(如果存在),而不管注册它们的代码驻留在何处。这可能是最稳健的方法。
从上述内容中可以看出,为了便于移植,最好避免调用g_atexit()
(或 atexit()),除了在程序的主执行文件中。
自 2.32 起弃用
最好避免使用 g_atexit()。
参数
func
-
类型:
GVoidFunc
正常程序终止时要调用的函数。