glenda.party
term% ls -F
term% cat index.txt
SIGNAL(2)                     System Calls Manual                    SIGNAL(2)

NAME
       signal - catch or ignore signals

SYNOPSIS
       #include <signal.h>

       (*signal(sig, func))()
       (*func)();

DESCRIPTION
       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
               16   unassigned

       The  starred signals in the list above cause a core image if not caught
       or ignored.

       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
       particular signal.

       After  a  fork(2)  the  child inherits all signals.  Exec(2) resets all
       caught signals to default action.

SEE ALSO
       kill(1), kill(2), ptrace(2), setjmp(3)

DIAGNOSTICS
       The value (int)-1 is returned if the given signal is out of range.

BUGS
       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‐
       lematical.

ASSEMBLER
       (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.

                                                                     SIGNAL(2)