diff options
Diffstat (limited to 'Doc/lib')
-rw-r--r-- | Doc/lib/lib.tex | 1 | ||||
-rw-r--r-- | Doc/lib/libsignal.tex | 80 |
2 files changed, 81 insertions, 0 deletions
diff --git a/Doc/lib/lib.tex b/Doc/lib/lib.tex index d3901b2..b7b4068 100644 --- a/Doc/lib/lib.tex +++ b/Doc/lib/lib.tex @@ -78,6 +78,7 @@ language. \input{libppath} % really posixpath \input{libpwd} \input{libselect} +\input{libsignal} \input{libsocket} \input{libthread} diff --git a/Doc/lib/libsignal.tex b/Doc/lib/libsignal.tex new file mode 100644 index 0000000..52251c4 --- /dev/null +++ b/Doc/lib/libsignal.tex @@ -0,0 +1,80 @@ +\section{Built-in Module \sectcode{signal}} + +\bimodindex{signal} +This module provides mechanisms to write signal handlers in Python. + +{\bf Warning:} Some care must be taken if both signals and threads +will be used in the same program. The fundamental thing to remember +in using signals and threads simultaneously is: always perform +\code{signal()} operations in the main thread of execution. Any +thread can perform a \code{alarm()}, \code{getsignal()}, or +\code{pause()}; only the main thread can set a new signal handler, and +the main thread will be the only one to receive signals. This means +that signals can't be used as a means of interthread communication. +Use locks instead. + +The variables defined in the signal module are: + +\renewcommand{\indexsubitem}{(in module signal)} +\begin{datadesc}{SIG_DFL} + This is one of two standard signal handling options; it will simply + perform the default function for the signal. For example, on most + systems the default action for SIGQUIT is to dump core and exit, + while the default action for SIGCLD is to simply ignore it. +\end{datadesc} + +\begin{datadesc}{SIG_IGN} + This is another standard signal handler, which will simply ignore + the given signal. +\end{datadesc} + +\begin{datadesc}{SIG*} + All the signal numbers are defined symbolically. For example, the + hangup signal is defined as \code{signal.SIGHUP}; the variable names + are identical to the names used in C programs, as found in + \file{signal.h}. + The UNIX man page for \file{signal} lists the existing signals (on + some systems this is \file{signal(2)}, on others the list is in + \file{signal(7)}). + Note that not all systems define the same set of signal names; only + those names defined by the system are defined by this module. +\end{datadesc} + +The signal module defines the following functions: + +\begin{funcdesc}{alarm}{time} + If \var{time} is non-zero, this function requests that a + \code{SIGALRM} signal be sent to the process in \var{time} seconds. + Any previously scheduled alarm is canceled (i.e. only one alarm can + be scheduled at any time). The returned value is then the number of + seconds before any previously set alarm was to have been delivered. + If \var{time} is zero, no alarm id scheduled, and any scheduled + alarm is canceled. The return value is the number of seconds + remaining before a previously scheduled alarm. If the return value + is zero, no alarm is currently scheduled. (See the UNIX man page + \code{alarm(2)}.) +\end{funcdesc} + +\begin{funcdesc}{getsignal}{signalnum} + Returns the current signal handler for the signal \var{signalnum}. + The returned value may be a callable Python object, or one of the + special values \code{signal.SIG_IGN} or \code{signal.SIG_DFL}. +\end{funcdesc} + +\begin{funcdesc}{pause}{} + Causes the process to sleep until a signal is received; the + appropriate handler will then be called. Returns nothing. (See the + UNIX man page \code{signal(2)}.) +\end{funcdesc} + +\begin{funcdesc}{signal}{signalnum\, handler} + Sets the handler for signal \var{signalnum} to the function + \var{handler}. \var{handler} can be any callable Python object, or + one of the special values \code{signal.SIG_IGN} or + \code{signal.SIG_DFL}. The previous signal handler will be + returned. (See the UNIX man page \code{signal(2)}.) + + If threads are enabled, this function can only be called from the + main thread; attempting to call it from other threads will cause a + \code{ValueError} exception will be raised. +\end{funcdesc} |