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

FreeBSD Manual Pages

  
 
  

home | help
SIGNAL(3V)							    SIGNAL(3V)

NAME
       signal -	simplified software signal facilities

SYNOPSIS
       #include	<signal.h>

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

DESCRIPTION
       signal()	is a simplified	interface to the more general sigvec(2)	facil-
       ity.  Programs that use signal()	in preference  to  sigvec()  are  more
       likely to be portable to	all systems.

       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 be-
       cause it	wishes to access its control terminal while in the  background
       (see  termio(4)).   Signals are optionally generated when a process re-
       sumes 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  sig-
       nals  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 interrupt to a specified location.  The fol-
       lowing is a list	of all signals with names as in	the include file <sig-
       nal.h>:

	      SIGHUP	1    hangup
	      SIGINT	2    interrupt
	      SIGQUIT	3*   quit
	      SIGILL	4*   illegal instruction
	      SIGTRAP	5*   trace trap
	      SIGABRT	6*   abort (generated by abort(3) routine)
	      SIGEMT	7*   emulator trap
	      SIGFPE	8*   arithmetic	exception
	      SIGKILL	9    kill (cannot be caught, blocked, or ignored)
	      SIGBUS	10*  bus error
	      SIGSEGV	11*  segmentation violation
	      SIGSYS	12*  bad argument to system call
	      SIGPIPE	13   write on a	pipe or	other socket 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, blocked, 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(2V))
	      SIGXCPU	24   cpu time limit exceeded (see getrlimit(2))
	      SIGXFSZ	25   file size limit exceeded (see getrlimit(2))
	      SIGVTALRM	26   virtual time alarm	(see getitimer(2))
	      SIGPROF	27   profiling timer alarm (see	getitimer(2))
	      SIGWINCH	28@  window changed (see termio(4) and win(4S))
	      SIGLOST	29*  resource lost (see	lockd(8C))
	      SIGUSR1	30   user-defined signal 1
	      SIGUSR2	31   user-defined signal 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) ex-
       cept  for  signals  marked with @ or +.	Signals	marked with @ are dis-
       carded 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	occurrences  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, terminating the
       call prematurely, the call is automatically restarted.	In  particular
       this can	occur during a read(2V)	or write(2V) on	a slow device (such as
       a terminal; but not a file) and during a	wait(2V).

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

       After  a	 fork(2V)  or vfork(2) the child inherits all signals.	An ex-
       ecve(2V)	resets all caught signals to the default action; ignored  sig-
       nals remain ignored.

SYSTEM V DESCRIPTION
       If  func	 is SIG_IGN the	signal is subsequently ignored and pending in-
       stances of the signal are discarded.  Otherwise,	when  the  signal  oc-
       curs,  func is called.  Further occurrences of the signal are not auto-
       matically blocked.  The value of	func for the caught signal is reset to
       SIG_DFL before func is called, unless the signal	is SIGILL or SIGTRAP.

       A  return from the function continues the process at the	point at which
       it was interrupted.  The	handler	func does not remain 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 interrupted.  In particular  this
       can  occur  during  a read(2V) or write(2V) on a	slow device (such as a
       terminal; but not a file) and during  a	wait(2V).   After  the	signal
       catching	 function returns, the interrupted system call may return a -1
       to the calling process with errno set to	EINTR.

RETURN VALUES
       signal()	returns	the previous action on success.	 On  failure,  it  re-
       turns -1	and sets errno to indicate the error.

ERRORS
       signal()	 will fail and no action will take place if one	of the follow-
       ing occurs:

       EINVAL	      sig was not a valid signal number.

		      An attempt was made to ignore or supply  a  handler  for
		      SIGKILL or SIGSTOP.

SEE ALSO
       kill(1),	 execve(2V),  fork(2V),	 getitimer(2), getrlimit(2), kill(2V),
       ptrace(2),   read(2V),	sigblock(2),   sigpause(2V),	sigsetmask(2),
       sigstack(2),  sigvec(2),	 vfork(2),  wait(2V),  write(2V),  setjmp(3V),
       termio(4)

NOTES
       The handler routine can be declared:

	      void handler(sig,	code, scp, addr)
	      int sig, code;
	      struct sigcontext	*scp;
	      char *addr;

       Here sig	is the signal number; code is a	parameter of  certain  signals
       that  provides  additional  detail;  scp	is a pointer to	the sigcontext
       structure (defined in <signal.h>), used to restore the context from be-
       fore  the  signal;  and	addr  is  additional address information.  See
       sigvec(2) for more details.

				21 January 1990			    SIGNAL(3V)

NAME | SYNOPSIS | DESCRIPTION | SYSTEM V DESCRIPTION | RETURN VALUES | ERRORS | SEE ALSO | NOTES

Want to link to this manual page? Use this URL:
<https://www.freebsd.org/cgi/man.cgi?query=signal&sektion=3v&manpath=SunOS+4.1.3>

home | help