# #Copyright (c) 1994 Cygnus Support. #All rights reserved. # #Redistribution and use in source and binary forms are permitted #provided that the above copyright notice and this paragraph are #duplicated in all such forms and that any documentation, #and/or other materials related to such #distribution and use acknowledge that the software was developed #at Cygnus Support, Inc. Cygnus Support, Inc. may not be used to #endorse or promote products derived from this software without #specific prior written permission. #THIS SOFTWARE IS PROVIDED ``AS IS'' AND WITHOUT ANY EXPRESS OR #IMPLIED WARRANTIES, INCLUDING, WITHOUT LIMITATION, THE IMPLIED #WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. @node Signals @chapter Signal Handling (@file{signal.h}) A @dfn{signal} is an event that interrupts the normal flow of control in your program. Your operating environment normally defines the full set of signals available (see @file{sys/signal.h}), as well as the default means of dealing with them---typically, either printing an error message and aborting your program, or ignoring the signal. All systems support at least the following signals: @table @code @item SIGABRT Abnormal termination of a program; raised by the @code{abort} function. @item SIGFPE A domain error in arithmetic, such as overflow, or division by zero. @item SIGILL Attempt to execute as a function data that is not executable. @item SIGINT Interrupt; an interactive attention signal. @item SIGSEGV An attempt to access a memory location that is not available. @item SIGTERM A request that your program end execution. @end table Two functions are available for dealing with asynchronous signals---one to allow your program to send signals to itself (this is called @dfn{raising} a signal), and one to specify subroutines (called @dfn{handlers} to handle particular signals that you anticipate may occur---whether raised by your own program or the operating environment. To support these functions, @file{signal.h} defines three macros: @table @code @item SIG_DFL Used with the @code{signal} function in place of a pointer to a handler subroutine, to select the operating environment's default handling of a signal. @item SIG_IGN Used with the @code{signal} function in place of a pointer to a handler, to ignore a particular signal. @item SIG_ERR Returned by the @code{signal} function in place of a pointer to a handler, to indicate that your request to set up a handler could not be honored for some reason. @end table @file{signal.h} also defines an integral type, @code{sig_atomic_t}. This type is not used in any function declarations; it exists only to allow your signal handlers to declare a static storage location where they may store a signal value. (Static storage is not otherwise reliable from signal handlers.) @menu * psignal:: Print a signal message to standard error * raise:: Send a signal * sig2str:: Translate between signal number and name * signal:: Specify handler subroutine for a signal @end menu @page @include signal/psignal.def @page @include signal/raise.def @page @include signal/sig2str.def @page @include signal/signal.def