Establishes a cleanup handler to be executed when the thread exits or is canceled.
pthread_cleanup_push( *routine, arg );
Argument Data Type Accessroutine opaque pthread_ read cleanup_t arg opaque pthread_addr_t read
int pthread_cleanup_push( pthread_cleanup_t *routine, pthread_addr_t arg);
This routine and pthread_cleanup_pop are implemented as macros and must appear as statements and in pairs within the same lexical scope. You can think of the pthread_cleanup_push macro as expanding to a string whose first character is a left brace ({) and pthread_ cleanup_pop as expanding to a string containing the corresponding right brace (}).