In win32 esiste la funzione atexit(), è inclusa nello standard ANSI C/C++, ma non so se in
sistemi unix-like è suportata.

codice:
 #include <stdio.h>
 #include <stdlib.h>

 void exit_fn1(void)
 {
    printf("Exit function #1 called\n");
 }

 void exit_fn2(void)
 {
    printf("Exit function #2 called\n");
 }

 int main(void)
 {
    /* post exit function #1 */
    atexit(exit_fn1);
    /* post exit function #2 */
    atexit(exit_fn2);
    return 0;
 }