在我的 atexit()注册函数中,我希望获得退出状态( exit(3)的参数或返回的main())。
有没有可行的方法呢?是否有任何GNU libc特定的方式来实现它,例如全局持有我可以引用的值?
答案 0 :(得分:3)
这是一个黑客:
// hack.c
int last_exit;
// hack.h
extern int last_exit;
#define exit(x) (exit)(last_exit = (x))
不适用于return
,但是,嘿,它是可移植的!
在更加维护者友好的说明中,您可能需要考虑编写某种形式的包装器来为您执行类似的操作。黑客攻击GCC如何实现exit()
听起来像是一场维护噩梦。最好写一些为你退出的辅助函数,如果你是那种东西,甚至可以用宏来掩盖它们。如果您始终使用括号调用return
,则使用宏甚至可以替换return
次调用。虽然这听起来更像是一场维护噩梦。
答案 1 :(得分:0)
您可能想要使用on_exit
。这是不推荐使用的,这不是Posix,但至少它是glibc。