pthread_cleanup_push_defer_np(3) Library Functions Manual pthread_cleanup_push_defer_np, pthread_cleanup_pop_restore_np - POSIX (libpthread -lpthread) #include void pthread_cleanup_push_defer_np(typeof(void (void *)) *routine, void *arg); void pthread_cleanup_pop_restore_np(int execute); glibc ( feature_test_macros(7)): pthread_cleanup_push_defer_np(), pthread_cleanup_pop_defer_np(): _GNU_SOURCE pthread_cleanup_push(3) pthread_cleanup_pop(3) . pthread_cleanup_push(3) pthread_cleanup_push_defer_np() routine . "" ( pthread_setcanceltype(3)) " " . pthread_cleanup_pop(3) pthread_cleanup_pop_restore_np() . pthread_cleanup_push_defer_np() . . pthread_cleanup_push(3). : pthread_cleanup_push_defer_np(routine, arg); pthread_cleanup_pop_restore_np(execute); ( ): int oldtype; pthread_cleanup_push(routine, arg); pthread_setcanceltype(PTHREAD_CANCEL_DEFERRED, &oldtype); ... pthread_setcanceltype(oldtype, NULL); pthread_cleanup_pop(execute); "_np" ( ) . glibc 2.0 pthread_cancel(3), pthread_cleanup_push(3), pthread_setcancelstate(3), pthread_testcancel(3), pthreads(7) 3 . . : . 6.18 17 2025 pthread_cleanup_push_defer_np(3)