4BSD/usr/man/cat2/signal.2

Compare this file to the similar file:
Show the results in this format:




SIGNAL(2)           UNIX Programmer's Manual            SIGNAL(2)



NAME
     signal - catch or ignore signals

SYNOPSIS
     #include <signal.h>

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

DESCRIPTION
     _N._B.: The system currently supports two signal implementa-
     tions.  The one described here is standard in version 7 UNIX
     systems, and is retained for backward compatabililty.  The
     one described in _s_i_g_s_y_s(2) as supplemented by _s_i_g_s_e_t(3) pro-
     vides for the needs of the job control mechanisms used by
     _c_s_h(1), and corrects the bugs in this older implementation
     of signals, allowing programs which process interrupts to be
     written reliably.

     A signal is generated by some abnormal event, initiated
     either by user at a terminal (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 _s_i_g_n_a_l call allows them either to
     be ignored or to cause an interrupt to a specified location.
     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 with no one to read it
     SIGALRM 14   alarm clock
     SIGTERM 15   software termination signal
             16   unassigned
     _N._B.: There are actually more signals; see _s_i_g_s_y_s(2); the
     signals listed here are those of standard version 7.

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

     If _f_u_n_c is SIG_DFL, the default action for signal _s_i_g is
     reinstated; this default is termination, sometimes with a



Printed 11/10/80                                                1






SIGNAL(2)           UNIX Programmer's Manual            SIGNAL(2)



     core image.  If _f_u_n_c is SIG_IGN the signal is ignored.  Oth-
     erwise when the signal occurs _f_u_n_c 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 _s_i_g_n_a_l call.

     If, when using this (older) signal interface, a caught sig-
     nal occurs during certain system calls, the call terminates
     prematurely.  In particular this can occur during an _i_o_c_t_l,
     _r_e_a_d, or _w_r_i_t_e(2) on a slow device (like a terminal; but not
     a file); and during _p_a_u_s_e or _w_a_i_t(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 status.  The
     user's program may then, if it wishes, re-execute the call.

     The value of _s_i_g_n_a_l is the previous (or initial) value of
     _f_u_n_c for the particular signal.

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

     If a process is using the mechanisms of _s_i_g_s_y_s(2) and _s_i_g_-
     _s_e_t(3) then many of these calls are automatically restarted
     (See _s_i_g_s_y_s(2) and _j_o_b_s(3) for details).

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

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

BUGS
     The traps should be distinguishable by extra arguments to
     the signal handler, and all hardware supplied parameters
     should be made available to the signal routine.

     If a repeated signal arrives before the last one can be
     reset, there is no chance to catch it (however this is not
     true if you use _s_i_g_s_y_s(2) and _s_i_g_s_e_t(3)).

     The type specification of the routine and its _f_u_n_c argument
     are problematical.

ASSEMBLER (PDP-11)
     (signal = 48.)
     sys signal; sig; label
     (old label in r0)



Printed 11/10/80                                                2






SIGNAL(2)           UNIX Programmer's Manual            SIGNAL(2)



     If _l_a_b_e_l is 0, default action is reinstated.  If _l_a_b_e_l is 1,
     the signal is ignored.  Any other even _l_a_b_e_l specifies an
     address in the process where an interrupt is simulated.  An
     RTI or RTT instruction will return from the interrupt.

NOTES (VAX-11)
     See _s_i_g_s_y_s(2) for information on how hardware faults are
     mapped into signals.















































Printed 11/10/80                                                3