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

时间:2010-02-04 02:09:22

标签: c

在我的 atexit()注册函数中,我希望获得退出状态( exit(3)的参数或返回的main())。

有没有可行的方法呢?是否有任何GNU libc特定的方式来实现它,例如全局持有我可以引用的值?

2 个答案:

答案 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。