Unknown option: "-3" Unix manual page for pthread_cleanup_push. (host=minya system=Darwin)
PTHREAD_CLEANUP_PUSH(3)  BSD Library Functions Manual  PTHREAD_CLEANUP_PUSH(3)

NAME
     pthread_cleanup_push -- add a cleanup function for thread exit

SYNOPSIS
     #include <pthread.h>

     void
     pthread_cleanup_push(void (*cleanup_routine)(void *), void *arg);

DESCRIPTION
     The pthread_cleanup_push() function adds cleanup_routine to the top of
     the stack of cleanup handlers that get called when the current thread
     exits.

     When cleanup_routine is called, it is passed arg as its only argument.

     The pthread_cleanup_push() function is implemented as a macro that opens
     a new block.  Invocations of this function must appear as standalone
     statements that are paired with a later call of pthread_cleanup_pop(3) in
     the same lexical scope.

RETURN VALUES
     The pthread_cleanup_push() function does not return any value.

ERRORS
     None

SEE ALSO
     pthread_cleanup_pop(3), pthread_exit(3)

STANDARDS
     The pthread_cleanup_push() function conforms to ISO/IEC 9945-1:1996
     (``POSIX.1'').

BSD                            October 25, 2014                            BSD