X-Git-Url: https://pd.if.org/git/?p=pdclib.old;a=blobdiff_plain;f=man3%2Fatexit.3;fp=man3%2Fatexit.3;h=a210266150be56a057244b607acdd77ae1ecb75e;hp=0000000000000000000000000000000000000000;hb=c66e7780ad17eb9af82dc61f4e3b44b7f0c890b2;hpb=8ea6754f7b066c496d7c7c68e7695aaec29b253a diff --git a/man3/atexit.3 b/man3/atexit.3 new file mode 100644 index 0000000..a210266 --- /dev/null +++ b/man3/atexit.3 @@ -0,0 +1,100 @@ +.\" This file is part of the Public Domain C Library (PDCLib). +.\" Permission is granted to use, modify, and / or redistribute at will. +.\" +.Dd +.Dt atexit 3 +.Os + +.Sh NAME +.Nm atexit +.Nd registration of functions to be invoked before process termination + +.Sh SYNOPSIS +.In stdlib.h +.Fn "int atexit" "void (*handler)(void)" +.Fn "int at_quick_exit" "void (*handler)(void)" +(C11, C++11) + +.Sh DESCRIPTION +These functions register a function to be called when the corresponding process +exit function is invoked. For +.Fn atexit +the function will be invoked when the process is terminated by calling +.Fn exit ; +for +.Fn at_quick_exit +the function will be invoked when the process is terminated by calling +.Fn quick_exit . + +.Pp +These functions are used in order to permit a program to perform actions before +a process is terminated; for example, releasing an interprocess semaphore. +Special care should be taken when writing +.Fn at_quick_exit +handlers; the purpose of +.Fn quick_exit +is to support the abandonning of a process when normal process termination might +not be possible; at_quick_exit handlers should therefore be used sparingly and +only when their use is essential. + +.Pp +The standard guarantees that +.Fn atexit +and +.Fn at_quick_exit +may each be called at least 32 times successfully. + +.Pp +.Fn atexit +and +.Fn at_quick_exit +handlers are called in reverse order of the order they were registered in. For +precise details of their ordering, see +.Xr exit 3 . + +.Pp +The result of exiting from a handler registered with +.Fn atexit +or +.Fn at_quick_exit +by use of +.Fn longjmp +is undefined. If any function or destructor invoked by +.Fn exit +or +.Fn quick_exit +should throw, +.Fn std::terminate +is invoked. + +.Pp +Undefined behaviour results if an +.Fn atexit +or +.Fn at_quick_exit +handler calls +.Fn exit +or +.Fn quick_exit . + +.Sh RETURN VALUES +Returns 0 to indicate success; nonzero returns indicate failure. + +.Sh ERRORS +No errors are defined + +.Sh SEE ALSO +.Xr abort 3 +.Xr exit 3 +.Xr quick_exit 3 +.Xr _Exit 3 + +.Sh STANDARDS +.Fn atexit +is first defined in +.St -isoC-90 ; +.Fn at_quick_exit +was introduced in +.St -isoC-2011 +and +ISO/IEC 14882:2011 "C++ 2011" . \ No newline at end of file