unixdev.net


Switch to SpeakEasy.net DSL

The Modular Manual Browser

Home Page
Manual: (4.2BSD)
Page:
Section:
Apropos / Subsearch:
optional field

SIGNAL(3C)                                                          SIGNAL(3C)



NAME
       signal - simplified software signal facilities

SYNOPSIS
       #include <&lt;signal.h>&gt;

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

DESCRIPTION
       Signal  is  a simplified interface to the more general sigvec(2) facil-
       ity.

       A signal is generated by some abnormal event, initiated by a user at  a
       terminal (quit, interrupt, stop), by a program error (bus error, etc.),
       by request of another program (kill), or  when  a  process  is  stopped
       because  it  wishes  to  access its control terminal while in the back-
       ground (see tty(4)).  Signals are optionally generated when  a  process
       resumes  after  being  stopped,  when  the  status  of  child processes
       changes, or when input is ready at the control terminal.  Most  signals
       cause  termination of the receiving process if no action is taken; some
       signals instead cause the process receiving them to be stopped, or  are
       simply  discarded  if  the process has not requested otherwise.  Except
       for the SIGKILL and SIGSTOP signals, the  signal  call  allows  signals
       either  to be ignored or to cause an interrupt to a specified location.
       The following is a list of all signals with names  as  in  the  include
       file <signal.h>:

       SIGHUP    1    hangup
       SIGINT    2    interrupt
       SIGQUIT   3*   quit
       SIGILL    4*   illegal instruction
       SIGTRAP   5*   trace trap
       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
       SIGURG    16@  urgent condition present on socket
       SIGSTOP   17|+'stop (cannot be caught or ignored)
       SIGTSTP   18|+'stop signal generated from keyboard
       SIGCONT   19@  continue after stop
       SIGCHLD   20@  child status has changed
       SIGTTIN   21|+'background read attempted from control terminal
       SIGTTOU   22|+'background write attempted to control terminal
       SIGIO     23@  i/o is possible on a descriptor (see fcntl(2))
       SIGXCPU   24   cpu time limit exceeded (see setrlimit(2))
       SIGXFSZ   25   file size limit exceeded (see setrlimit(2))
       SIGVTALRM 26   virtual time alarm (see setitimer(2))
       SIGPROF   27   profiling timer alarm (see setitimer(2))

       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  (with a core image for starred signals)
       except for signals marked with @ or |+'.  Signals  marked  with  @  are
       discarded  if  the action is SIG_DFL; signals marked with |+' cause the
       process to stop.  If func is SIG_IGN the signal is subsequently ignored
       and pending instances of the signal are discarded.  Otherwise, when the
       signal occurs  further  occurences  of  the  signal  are  automatically
       blocked and func is called.

       A  return  from  the function unblocks the handled signal and continues
       the process at the point it was interrupted.   Unlike  previous  signal
       facilities,  the handler func remains installed after a signal has been
       delivered.

       If a caught signal occurs during certain system calls, causing the call
       to terminate prematurely, the call is automatically restarted.  In par-
       ticular this can occur during a read or write(2) on a slow device (such
       as a terminal; but not a file) and during a wait(2).

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

       After a fork(2) or vfork(2) the child inherits all signals.   Execve(2)
       resets all caught signals to the default action; ignored signals remain
       ignored.

RETURN VALUE
       The previous action is returned on a successful call.  Otherwise, -1 is
       returned and errno is set to indicate the error.

ERRORS
       Signal  will fail and no action will take place if one of the following
       occur:

       [EINVAL]       Sig is not a valid signal number.

       [EINVAL]       An attempt is made to ignore or  supply  a  handler  for
                      SIGKILL or SIGSTOP.

       [EINVAL]       An attempt is made to ignore SIGCONT (by default SIGCONT
                      is ignored).

SEE ALSO
       kill(1), ptrace(2),  kill(2),  sigvec(2),  sigblock(2),  sigsetmask(2),
       sigpause(2), sigstack(2), setjmp(3), tty(4)

NOTES  (VAX-11)
       The handler routine can be declared:

           handler(sig, code, scp)

       Here sig is the signal number, into which the hardware faults and traps
       are mapped as defined below.  Code is a parameter  which  is  either  a
       constant  as  given  below  or, for compatibility mode faults, the code
       provided by the hardware.  Scp is a pointer to  the  struct  sigcontext
       used  by the system to restore the process context from before the sig-
       nal.  Compatibility mode faults are distinguished from the other SIGILL
       traps by having PSL_CM set in the psl.

       The  following  defines  the  mapping  of hardware traps to signals and
       codes.  All of these symbols are defined in <signal.h>:

          Hardware condition                  Signal       Code

       Arithmetic traps:
          Integer overflow                    SIGFPE       FPE_INTOVF_TRAP
          Integer division by zero            SIGFPE       FPE_INTDIV_TRAP
          Floating overflow trap              SIGFPE       FPE_FLTOVF_TRAP
          Floating/decimal division by zero   SIGFPE       FPE_FLTDIV_TRAP
          Floating underflow trap             SIGFPE       FPE_FLTUND_TRAP
          Decimal overflow trap               SIGFPE       FPE_DECOVF_TRAP
          Subscript-range                     SIGFPE       FPE_SUBRNG_TRAP
          Floating overflow fault             SIGFPE       FPE_FLTOVF_FAULT
          Floating divide by zero fault       SIGFPE       FPE_FLTDIV_FAULT
          Floating underflow fault            SIGFPE       FPE_FLTUND_FAULT
       Length access control                  SIGSEGV
       Protection violation                   SIGBUS
       Reserved instruction                   SIGILL       ILL_RESAD_FAULT
       Customer-reserved instr.               SIGEMT
       Reserved operand                       SIGILL       ILL_PRIVIN_FAULT
       Reserved addressing                    SIGILL       ILL_RESOP_FAULT
       Trace pending                          SIGTRAP
       Bpt instruction                        SIGTRAP
       Compatibility-mode                     SIGILL       hardware supplied code
       Chme                                   SIGSEGV
       Chms                                   SIGSEGV
       Chmu                                   SIGSEGV



4th Berkeley Distribution        15 June 1983                       SIGNAL(3C)