Skip site navigation (1)Skip section navigation (2)

FreeBSD Manual Pages


home | help
SIGNAL(2)		      System Calls Manual		     SIGNAL(2)

       signal -	catch or ignore	signals

       #include	<signal.h>

       (*signal(sig, func))()

       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.

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

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

       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-

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



Want to link to this manual page? Use this URL:

home | help