Obtención del estado de salida desde una función registrada con atexit ()

Dentro de mi función registrada atexit () me gustaría obtener el estado de salida (ya sea el argumento para salir (3) o con qué regresó main ()).

¿Hay alguna forma portátil de hacer esto? ¿Existe alguna forma específica de hacerlo de GNU libc, como una retención global de ese valor al que pueda hacer referencia?

Aquí hay un hack:

// hack.c int last_exit; // hack.h extern int last_exit; #define exit(x) (exit)(last_exit = (x)) 

No trabajará para el return , pero, oye, ¡es portátil!

En una nota más fácil de mantener, es posible que desee considerar escribir algún tipo de envoltorio para hacer algo similar para usted. Hackear alrededor de cómo GCC implementa exit() suena como una pesadilla de mantenimiento. Es mejor escribir algunas funciones de ayuda que te salgan, e incluso enmascararlas con macros si te gusta ese tipo de cosas. Con una macro, incluso podría reemplazar las llamadas return , si siempre llama a return entre paréntesis. Aunque esto suena aún más como una pesadilla de mantenimiento.

Es posible que desee utilizar on_exit . Esto está en desuso, y esto no es Posix, pero al menos está en glibc.