:: RootR ::  Hosting Order Map Login   Secure Inter-Network Operations  
 
atexit(3) - phpMan

Command: man perldoc info search(apropos)  


ATEXIT(3)                           Linux Programmer's Manual                           ATEXIT(3)



NAME
       atexit - register a function to be called at normal process termination

SYNOPSIS
       #include <stdlib.h>

       int atexit(void (*function)(void));

DESCRIPTION
       The atexit() function registers the given function to be called at normal process termina‐
       tion, either via exit(3) or via return from the program's main().  Functions so registered
       are called in the reverse order of their registration; no arguments are passed.

       The  same  function may be registered multiple times: it is called once for each registra‐
       tion.

       POSIX.1-2001 requires that an implementation allow at least ATEXIT_MAX (32) such functions
       to  be  registered.  The actual limit supported by an implementation can be obtained using
       sysconf(3).

       When a child process is created via fork(2), it inherits copies of its parent's  registra‐
       tions.   Upon  a  successful  call  to one of the exec(3) functions, all registrations are
       removed.

RETURN VALUE
       The atexit() function returns the value 0 if successful; otherwise it  returns  a  nonzero
       value.

CONFORMING TO
       SVr4, 4.3BSD, C89, C99, POSIX.1-2001.

NOTES
       Functions  registered  using  atexit() (and on_exit(3)) are not called if a process termi‐
       nates abnormally because of the delivery of a signal.

       If one of the functions registered functions calls _exit(2), then any remaining  functions
       are not invoked, and the other process termination steps performed by exit(3) are not per‐
       formed.

       POSIX.1-2001 says that the result of calling exit(3) more than once (i.e., calling exit(3)
       within  a  function  registered  using  atexit())  is undefined.  On some systems (but not
       Linux), this can result in an infinite recursion;  portable  programs  should  not  invoke
       exit(3) inside a function registered using atexit().

       The  atexit()  and  on_exit(3)  functions  register  functions on the same list: at normal
       process termination, the registered functions are invoked in reverse order of their regis‐
       tration by these two functions.

       POSIX.1-2001  says  that the result is undefined if longjmp(3) is used to terminate execu‐
       tion of one of the functions registered atexit().

   Linux notes
       Since glibc 2.2.3, atexit() (and on_exit(3)) can be used within a shared library to estab‐
       lish functions that are called when the shared library is unloaded.

EXAMPLE
       #include <stdio.h>
       #include <stdlib.h>
       #include <unistd.h>

       void
       bye(void)
       {
           printf("That was all, folks\n");
       }

       int
       main(void)
       {
           long a;
           int i;

           a = sysconf(_SC_ATEXIT_MAX);
           printf("ATEXIT_MAX = %ld\n", a);

           i = atexit(bye);
           if (i != 0) {
               fprintf(stderr, "cannot set exit function\n");
               exit(EXIT_FAILURE);
           }

           exit(EXIT_SUCCESS);
       }

SEE ALSO
       _exit(2), exit(3), on_exit(3)

COLOPHON
       This  page  is  part of release 3.74 of the Linux man-pages project.  A description of the
       project, information about reporting bugs, and the latest version of  this  page,  can  be
       found at http://www.kernel.org/doc/man-pages/.



Linux                                       2008-12-05                                  ATEXIT(3)


/man
rootr.net - man pages