A signal is a mechanism for transferring control, that is typically used to notify a process that an event has occurred. That process can then respond to that event accordingly. C99 provides functions for sending and handling signals within a C program.
Signals are handled by a process by registering a signal handler using the signal()
function, which is specified as:
Code Block |
---|
void (*signal(int sig, void (*func)(int)))(int);
|
This is conceptually equivalent to
Code Block |
---|
typedef void (*SighandlerType)(int signum);
extern SighandlerType signal(int signum, SighandlerType handler);
|
Signal handlers can be interrupted by signals, including their own. If a signal is not reset before its handler is called, the handler can interrupt its own execution. A handler that always successfully executes its code despite interrupting itself or being interrupted is asynchronous-safe.
...