< c‎ | program
Revision as of 08:16, 10 May 2013 by P12 (Talk | contribs)

Defined in header <signal.h>
void (*signal( int sig, void (*handler) (int))) (int);

Sets the error handler for signal sig. The signal handler can be set so that default handling will occur, signal is ignored, or an user-defined function is called.

When signal handler is set to a function and a signal occurs, it is implementation defined whether signal(sig, SIG_DFL) will be executed immediately before the start of signal handler. Also, the implementation can prevent some implementation-defined set af signals from occurring while the signal handler runs.

If the user defined function returns when handling SIGFPE, SIGILL or SIGSEGV, the behavior is undefined. In most implementations the program terminates.

If the signal handler is called as a result of abort or raise, the behavior is undefined if any of the following requirements is not followed:

  • the signal handler calls raise.
  • the signal handler refers to an object of static storage duration which is not declared as volatile sig_atomic_t.
  • the signal handler calls any function within the standard library, except abort, _Exit, or signal with the first argument not being the number of the signal currently handled.



sig - the signal to set the signal handler to. It can be an implementation-defined value or one of the following values: Template:c/program/dcl list SIG types

handler - the signal handler. This must be one of the following:
  • SIG_DFL macro. The signal handler is set to default signal handler.
  • SIG_IGN macro. The signal is ignored.
  • pointer to a function. The signature of the function must be equivalent to the following:
void fun(int sig);

Return value

Previous signal handler on success or Template:rlpt on failure (setting a signal handler can be disabled on some implementations).


See also

Template:c/program/dcl list raise