在我的atexit()注册函数里面,我想得到退出状态(exit(3)的参数或者返回的main()).
有没有可行的方法这样做?是否有任何GNU libc特定的方式来实现它,例如全局持有我可以参考的值?
这是一个技巧:
// 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调用。尽管这听起来更像是一场维护噩梦。