diff options
author | cinap_lenrek <cinap_lenrek@localhost> | 2011-05-03 11:25:13 +0000 |
---|---|---|
committer | cinap_lenrek <cinap_lenrek@localhost> | 2011-05-03 11:25:13 +0000 |
commit | 458120dd40db6b4df55a4e96b650e16798ef06a0 (patch) | |
tree | 8f82685be24fef97e715c6f5ca4c68d34d5074ee /sys/src/cmd/python/Doc/lib/libatexit.tex | |
parent | 3a742c699f6806c1145aea5149bf15de15a0afd7 (diff) |
add hg and python
Diffstat (limited to 'sys/src/cmd/python/Doc/lib/libatexit.tex')
-rw-r--r-- | sys/src/cmd/python/Doc/lib/libatexit.tex | 94 |
1 files changed, 94 insertions, 0 deletions
diff --git a/sys/src/cmd/python/Doc/lib/libatexit.tex b/sys/src/cmd/python/Doc/lib/libatexit.tex new file mode 100644 index 000000000..33dc7ddf8 --- /dev/null +++ b/sys/src/cmd/python/Doc/lib/libatexit.tex @@ -0,0 +1,94 @@ +\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. + +If an exception is raised during execution of the exit handlers, a +traceback is printed (unless \exception{SystemExit} is raised) and the +exception information is saved. After all exit handlers have had a +chance to run the last exception to be raised is re-raised. +\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} + +Positional and keyword arguments may also be passed to +\function{register()} to be passed along to the registered function +when it is called: + +\begin{verbatim} +def goodbye(name, adjective): + print 'Goodbye, %s, it was %s to meet you.' % (name, adjective) + +import atexit +atexit.register(goodbye, 'Donny', 'nice') + +# or: +atexit.register(goodbye, adjective='nice', name='Donny') +\end{verbatim} |