是否有一种“内置”方法可以知道传递给exit
安装的退出处理程序内部的退出代码atexit
?
例如,如果调用exit(EXIT_FAILURE)
,我的处理程序将执行与调用不同的操作exit(EXIT_SUCCESS)
。
我可以用一个全局变量来解决这个问题,但这会否定exit
在我的程序中无论在哪里调用的舒适性。
atexit
没有。但是您可以使用以下on_exit
功能:
函数:int on_exit (void (*function)(int status, void *arg), void *arg)
这个函数是atexit 的一个更强大的变体。它接受两个参数,一个函数函数和一个任意指针 arg。在正常程序终止时,使用两个参数调用该函数:传递给 exit 的状态值和 arg。
此函数包含在 GNU C 库中只是为了与 SunOS 兼容,其他实现可能不支持。
好吧,你必须使用 gnu libc ...