SIGNAL(II) 8/5/73 SIGNAL(II)
NAME
signal - catch or ignore signals
SYNOPSIS
(signal = 48.)
sys signal; sig; label
(old value in r0)
signal(sig, func)
int (*func)();
DESCRIPTION
When the signal defined by sig is sent to the current
process, it is to be treated according to label (resp.
func.) The following is the list of signals:
1 hangup
2 interrupt
3* quit
4* illegal instruction
5* trace trap
6* IOT instruction
7* EMT instruction
8* floating point exception
9 kill (cannot be caught or ignored)
10* bus error
11* segmentation violation
12* bad argument to sys call
If label is 0, the default system action applies to the
signal. This is processes termination with or without a
core dump. If label is odd, the signal is ignored. Any
other even label specifies an address in the process where
an interrupt is simulated. An RTI instruction will return
from the interrupt. As a signal is caught, it is reset to
0. Thus if it is desired to catch every such signal, the
catching routine must issue another signal call.
In C, if func is 0 or 1, the action is as described above.
If func is even, it is assumed to be the address of a
function entry point. When the signal occurs, the function
will be called. A return from the function will simulate
the RTI.
The starred signals in the list above cause core images if
not caught and not ignored.
In assembly language, the old value of the signal is
returned in r0. In C, that value is retruned.
After a fork, the child inherits all signals. The exec call
resets all caught signals to default action.
SEE ALSO
kill (I), kill (II)
DIAGNOSTICS
The error bit (c-bit) is set if the given signal is out of
range. In C, a -1 indicates an error; 0 indicates success.