Use pthread_cleanup_push(3THR) to push a cleanup handler onto a cleanup stack (LIFO).
Prototype: void pthread_cleanup_push(void(*routine)(void *), void *args);
#include <pthread.h> /* push the handler "routine" on cleanup stack */ pthread_cleanup_push (routine, arg);