SIGNAL(2) System Calls Manual SIGNAL(2)
signal - catch or ignore signals
A signal is generated by some abnormal event, initiated either by user
at a typewriter (quit, interrupt), by a program error (bus error,
etc.), or by request of another program (kill). Normally all signals
cause termination of the receiving process, but a signal call allows
them either to be ignored or to cause an interrupt to a specified loca-
tion. Here is the list of signals with names as in the include file.
SIGHUP 1 hangup
SIGINT 2 interrupt
SIGQUIT 3* quit
SIGILL 4* illegal instruction (not reset when caught)
SIGTRAP 5* trace trap (not reset when caught)
SIGIOT 6* IOT instruction
SIGEMT 7* EMT instruction
SIGFPE 8* floating point exception
SIGKILL 9 kill (cannot be caught or ignored)
SIGBUS 10* bus error
SIGSEGV 11* segmentation violation
SIGSYS 12* bad argument to system call
SIGPIPE 13 write on a pipe or link with no one to read it
SIGALRM 14 alarm clock
SIGTERM 15 software termination signal
The starred signals in the list above cause a core image if not caught
If func is SIG_DFL, the default action for signal sig is reinstated;
this default is termination, sometimes with a core image. If func is
SIG_IGN the signal is ignored. Otherwise when the signal occurs func
will be called with the signal number as argument. A return from the
function will continue the process at the point it was interrupted.
Except as indicated, a signal is reset to SIG_DFL after being caught.
Thus if it is desired to catch every such signal, the catching routine
must issue another signal call.
When a caught signal occurs during certain system calls, the call ter-
minates prematurely. In particular this can occur during a read or
write(2) on a slow device (like a typewriter; but not a file); and dur-
ing pause or wait(2). When such a signal occurs, the saved user status
is arranged in such a way that when return from the signal-catching
takes place, it will appear that the system call returned an error sta-
tus. The user's program may then, if it wishes, re-execute the call.
The value of signal is the previous (or initial) value of func for the
After a fork(2) the child inherits all signals. Exec(2) resets all
caught signals to default action.
kill(1), kill(2), ptrace(2), setjmp(3)
The value (int)-1 is returned if the given signal is out of range.
If a repeated signal arrives before the last one can be reset, there is
no chance to catch it.
The type specification of the routine and its func argument are prob-
(signal = 48.)
sys signal; sig; label
(old label in r0)
If label is 0, default action is reinstated. If label is odd, the sig-
nal is ignored. Any other even label specifies an address in the
process where an interrupt is simulated. An RTI or RTT instruction
will return from the interrupt.