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

FreeBSD Manual Pages

  
 
  

home | help
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)

NAME | SYNOPSIS | DESCRIPTION | SEE ALSO | DIAGNOSTICS | BUGS | ASSEMBLER

Want to link to this manual page? Use this URL:
<https://man.freebsd.org/cgi/man.cgi?query=signal&sektion=2&manpath=Unix+Seventh+Edition>

home | help