\section{\module{atexit} ---
         Exit handlers}

\declaremodule{standard}{atexit}
\moduleauthor{Skip Montanaro}{skip@mojam.com}
\sectionauthor{Skip Montanaro}{skip@mojam.com}
\modulesynopsis{Register and execute cleanup functions.}

\versionadded{2.0}

The \module{atexit} module defines a single function to register
cleanup functions.  Functions thus registered are automatically
executed upon normal interpreter termination.

Note: the functions registered via this module are not called when the program is killed by a
signal, when a Python fatal internal error is detected, or when
\function{os._exit()} is called.

This is an alternate interface to the functionality provided by the
\code{sys.exitfunc} variable.
\withsubitem{(in sys)}{\ttindex{exitfunc}}

Note: This module is unlikely to work correctly when used with other code
that sets \code{sys.exitfunc}.  In particular, other core Python modules are
free to use \module{atexit} without the programmer's knowledge.  Authors who
use \code{sys.exitfunc} should convert their code to use
\module{atexit} instead.  The simplest way to convert code that sets
\code{sys.exitfunc} is to import \module{atexit} and register the function
that had been bound to \code{sys.exitfunc}.

\begin{funcdesc}{register}{func\optional{, *args\optional{, **kargs}}}
Register \var{func} as a function to be executed at termination.  Any
optional arguments that are to be passed to \var{func} must be passed
as arguments to \function{register()}.

At normal program termination (for instance, if
\function{sys.exit()} is called or the main module's execution
completes), all functions registered are called in last in, first out
order.  The assumption is that lower level modules will normally be
imported before higher level modules and thus must be cleaned up
later.
\end{funcdesc}


\begin{seealso}
  \seemodule{readline}{Useful example of \module{atexit} to read and
                       write \refmodule{readline} history files.}
\end{seealso}


\subsection{\module{atexit} Example \label{atexit-example}}

The following simple example demonstrates how a module can initialize
a counter from a file when it is imported and save the counter's
updated value automatically when the program terminates without
relying on the application making an explicit call into this module at
termination.

\begin{verbatim}
try:
    _count = int(open("/tmp/counter").read())
except IOError:
    _count = 0

def incrcounter(n):
    global _count
    _count = _count + n

def savecounter():
    open("/tmp/counter", "w").write("%d" % _count)

import atexit
atexit.register(savecounter)
\end{verbatim}
