signal --
specify action to take when Tcl is signalled by UNIX
Syntax
signalactionsiglist [command]
Description
Specifies the action to take when a UNIX signal is received by Extended
Tcl, or a program that embeds it. siglist is a list
of either the symbolic or numeric UNIX signal (the ``SIG''
prefix is optional).
action is one of the following actions to be performed on receipt of the
signal. To specify all modifiable signals, use ``∗'' (this does not
include SIGKILL or SIGSTOP as these cannot be
modified).
default
Performs system default action when signal is received
(see signal system call documentation).
ignore
Ignores the signal.
error
Generates a catchable Tcl error. It is as if the command
that was running returned an error. The error code is in the form:
POSIX SIGsigname
For the death of child signal, signame is always
SIGCHLD, rather than SIGCLD, to allow writing portable code.
trap
When the signal occurs, executes command and continue
execution if an error is not returned by command. The command will
be executed in the global context. The command is edited before
execution, replacing occurrences of ``%S'' with the signal name.
Occurrences of ``%%'' result in a single ``%''.
This editing occurs just before the trap command is evaluated.
If an error is returned,
then follow the standard Tcl error mechanism.
Often command simply exits.
get
Retrieves the current settings of the specified signals. A keyed
list is returned where the keys are one of the specified signals. The
values are a list consisting of the action associated with the signal:
a 0 value if the signal may be delivered (not blocked) and a 1 if it can
be
blocked. The actions may be one of default, ignore,
error or trap. For example, if the action is
trap,
then the third element is the command associated with the action.
set
Sets the signals from a keyed list in the format returned by the get command. For this action, siglist is the keyed list of signal states.
Signals with an action of unknown are not modified.
block
Blocks the specified signals from being received. (POSIX systems only).
unblock
Allows the specified signal to be received. Pending signals
do not occur. (POSIX systems only.)
The signal action is enabled after the specified signal has occurred.
The exception to this is SIGCHLD on systems without POSIX
signals.
For these systems, SIGCHLD is not automatically re-enabled. After a
SIGCHLD signal is received, a call to wait must be
performed to retrieve the exit status of the child process before issuing
another signalSIGCHLD ... command.
For code that is to be portable
between both types of systems, use this approach.
Signals are not processed until after the completion of the Tcl command that
is executing when the signal is received. If an interactive Tcl shell is
running, then the SIGINT is set to error;
non-interactive
Tcl sessions leave SIGINT unchanged from when the process started
(normally default for foreground processes and ignore for
processes in the background).