【发布时间】:2012-09-13 16:48:18
【问题描述】:
是否有一种“内置”方法可以知道在使用atexit 安装的退出处理程序中传递给exit 的退出代码?
例如,如果调用exit(EXIT_FAILURE),我的处理程序将执行与exit(EXIT_SUCCESS) 不同的操作。
我可以用一个全局变量来解决这个问题,但无论在我的程序中的哪个位置,这都会抵消调用exit 的舒适性。
【问题讨论】:
标签: c linux exit glibc exit-code
是否有一种“内置”方法可以知道在使用atexit 安装的退出处理程序中传递给exit 的退出代码?
例如,如果调用exit(EXIT_FAILURE),我的处理程序将执行与exit(EXIT_SUCCESS) 不同的操作。
我可以用一个全局变量来解决这个问题,但无论在我的程序中的哪个位置,这都会抵消调用exit 的舒适性。
【问题讨论】:
标签: c linux exit glibc exit-code
atexit 没有。但你可以使用on_exit 函数:
函数:int on_exit(void (*function)(int status, void *arg), void *arg)
这个函数是atexit 的一个更强大的变体。它接受两个 参数、函数函数和任意指针 参数。在正常程序终止时,该函数被调用两个 arguments:传递给exit的状态值,以及arg。
此函数包含在 GNU C 库中只是为了兼容 对于 SunOS,其他实现可能不支持。
嗯,你必须使用 gnu libc ...
【讨论】: