函数

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

正常程序终止时要调用的函数。