SIGNAL

NAME
SYNOPSIS
DESCRIPTION
RETURN VALUE
NOTES
CONFORMING TO
SEE ALSO

NAME

signal − ANSI C signal handling

SYNOPSIS

#include <signal.h>

void (*signal(int signum, void (*handler)(int)))(int);

DESCRIPTION

The signal system call installs a new signal handler for the signal with number signum. The signal handler is set to handler which may be a user specified function, or one of the following:

SIG_IGN

Ignore the signal.

SIG_DFL

Reset the signal to its default behavior.

The integer argument that is handed over to the signal handler routine is the signal number. This makes it possible to use one signal handler for several signals.

RETURN VALUE

signal returns the previous value of the signal handler, or SIG_ERR on error.

NOTES

Signal handlers cannot be set for SIGKILL or SIGSTOP.

Unlike on BSD systems, signals under Linux are reset to their default behavior when raised. However, if you include <bsd/signal.h> instead of <signal.h> then signal is redefined as __bsd_signal and signal has the BSD semantics. Both versions of signal are library routines built on top of sigaction(2).

If you’re confused by the prototype at the top of this manpage, it may help to see it separated out thus:

typedef void (*sighandler_t)(int);
sighandler_t signal(int
signum, sighandler_t handler);

According to POSIX, the behaviour of a process is undefined after it ignores a SIGFPE, SIGILL, or SIGSEGV signal that was not generated by the kill() or the raise() functions. Integer division by zero has undefined result. On some architectures it will generate a SIGFPE signal. (Also dividing the most negative integer by −1 may generate SIGFPE.) Ignoring this signal might lead to an endless loop.

According to POSIX (B.3.3.1.3) you must not set the action for SIGCHLD to SIG_IGN. Here the BSD and SYSV behaviours differ, causing BSD software that sets the action for SIGCHLD to SIG_IGN to fail on Linux.

CONFORMING TO

ANSI C

SEE ALSO

kill(1), kill(2), killpg(2), pause(2), raise(3), sigaction(2), signal(7), sigsetops(3), sigvec(2), alarm(2)