Here is what the last draft of C90 was saying:
"4.7 SIGNAL HANDLING <signal.h>
The header <signal.h> declares a type and two functions and defines
several macros, for handling various signals (conditions that may be
reported during program execution).
The type defined is
sig_atomic_t
which is the integral type of an object that can be accessed as an
atomic entity, even in the presence of asynchronous interrupts.
The macros defined are
SIG_DFL
SIG_ERR
SIG_IGN
which expand to distinct constant expressions that have type
compatible with the second argument to and the return value of the
signal function, and whose value compares unequal to the address of
any declarable function; and the following, each of which expands to a
positive integral constant expression that is the signal number
corresponding to the specified condition:
SIGABRT abnormal termination, such as is initiated by the abort function
SIGFPE an erroneous arithmetic operation, such as zero divide or an
operation resulting in overflow
SIGILL detection of an invalid function image, such as an illegal
instruction
SIGINT receipt of an interactive attention signal
SIGSEGV an invalid access to storage
SIGTERM a termination request sent to the program
An implementation need not generate any of these signals, except as
a result of explicit calls to the raise function. Additional signals
and pointers to undeclarable functions, with macro definitions
beginning, respectively, with the letters SIG and an upper-case letter
or with SIG_ and an upper-case letter,/97/ may also be specified by
the implementation. The complete set of signals, their semantics, and
their default handling is implementation-defined; all signal values
shall be positive.
4.7.1 Specify signal handling
4.7.1.1 The signal function
Synopsis
#include <signal.h>
void (*signal(int sig, void (*func)(int)))(int);
Description
The signal function chooses one of three ways in which receipt of
the signal number sig is to be subsequently handled. If the value of
func is SIG_DFL , default handling for that signal will occur. If the
value of func is SIG_IGN , the signal will be ignored. Otherwise,
func shall point to a function to be called when that signal occurs.
Such a function is called a signal handler .
When a signal occurs, if func points to a function, first the
equivalent of signal(sig, SIG_DFL); is executed or an
implementation-defined blocking of the signal is performed. (If the
value of sig is SIGILL, whether the reset to SIG_DFL occurs is
implementation-defined.) Next the equivalent of (*func)(sig); is
executed. The function func may terminate by executing a return
statement or by calling the abort , exit , or longjmp function. If
func executes a return statement and the value of sig was SIGFPE or
any other implementation-defined value corresponding to a
computational exception, the behavior is undefined. Otherwise, the
program will resume execution at the point it was interrupted.
If the signal occurs other than as the result of calling the abort
or raise function, the behavior is undefined if the signal handler
calls any function in the standard library other than the signal
function itself or refers to any object with static storage duration
other than by assigning a value to a static storage duration variable
of type volatile sig_atomic_t . Furthermore, if such a call to the
signal function results in a SIG_ERR return, the value of errno is
indeterminate.
At program startup, the equivalent of
signal(sig, SIG_IGN);
may be executed for some signals selected in an implementation-defined
manner; the equivalent of
signal(sig, SIG_DFL);
is executed for all other signals defined by the implementation.
The implementation shall behave as if no library function calls the
signal function.
Returns
If the request can be honored, the signal function returns the
value of func for the most recent call to signal for the specified
signal sig . Otherwise, a value of SIG_ERR is returned and a positive
value is stored in errno .
Forward references: the abort function ($4.10.4.1).
4.7.2 Send signal
4.7.2.1 The raise function
Synopsis
#include <signal.h>
int raise(int sig);
Description
The raise function sends the signal sig to the executing program.
Returns
The raise function returns zero if successful, nonzero if unsuccessful."
--
Ioannis Vranos
http://www23.brinkster.com/noicys