signal \*- catch or ignore signals
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).
cause termination of the receiving process,
but this call allows them either to be ignored
or to cause an interrupt to a specified location.
Here is the list of signals:
4* illegal instruction (not reset when caught)
5* trace trap (not reset when caught)
8* floating point exception
9 kill (cannot be caught or ignored)
11* segmentation violation
12* bad argument to system call
13 write on a pipe with no one to read it
In the assembler call, if
the process is terminated
when the signal occurs; this is the default action.
is odd, the signal is ignored.
specifies an address in the process
where an interrupt is simulated.
An RTI or RTT instruction will return from the
a signal is reset to 0 after being caught.
the catching routine must
even, it is assumed to be the address
of a function entry point.
the function will be called.
A return from the function will
continue the process at the point it was interrupted.
As in the assembler call,
must in general be called again to catch subsequent signals.
When a caught signal occurs
during certain system calls, the call terminates prematurely.
In particular this can occur
on a slow device (like a typewriter; but not a file);
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 a characteristic error status.
The user's program may then, if it wishes,
The starred signals in the list above cause a core image
if not caught or ignored.
The value of the call is the old action defined for the signal.
caught signals to default action.
given signal is out of range.
In C, a \*-1 indicates an error;