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

void handler1(void);
void handler2(void);
void handler3(void);

int
main(int argc, char *argv[])
{
    atexit(handler1);
    atexit(handler2);
    atexit(handler3);

    printf("job done\n");
    exit(EXIT_SUCCESS);
}

void
handler1(void)
{
    printf("handler 1\n");
}

void
handler2(void)
{
    printf("handler 2\n");
    exit(EXIT_SUCCESS);         // call exit() inside exit handler
}

void
handler3(void)
{
    printf("handler 3\n");
}
