unixdev.net


Switch to SpeakEasy.net DSL

The Modular Manual Browser

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

SIGNAL(2)                     System Calls Manual                    SIGNAL(2)



NAME
       signal - catch or ignore signals

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

       (*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)