< c‎ | program
Revision as of 18:30, 2 November 2012 by P12bot (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 Template:rlpt, Template:rlpt or Template:rlpt, 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