从使用atexit()注册的函数内部获取退出状态

Sea*_*ney 6 c

在我的atexit()注册函数里面,我想得到退出状态(exit(3)的参数或者返回的main()).

有没有可行的方法这样做?是否有任何GNU libc特定的方式来实现它,例如全局持有我可以参考的值?

Chr*_*utz 3

这是一个技巧:

// hack.c
int last_exit;

// hack.h
extern int last_exit;
#define exit(x) (exit)(last_exit = (x))
Run Code Online (Sandbox Code Playgroud)

不适用于return,但是,嘿,它是便携式的!

为了对维护者更友好,您可能需要考虑编写某种形式的包装器来为您执行类似的操作。破解 GCC 的实现方式exit()听起来像是一场维护噩梦。最好编写一些为您退出的辅助函数,如果您喜欢这种事情,甚至可以用宏屏蔽它们。return如果您总是使用括号进行调用,则使用宏您甚至可以替换return调用。尽管这听起来更像是一场维护噩梦。