Системный вызов signal()

Прототип системного вызова

#include <signal.h>
void (*signal (int sig, void (*handler) (int)))(int);

Описание системного вызова

Системный вызов signal служит для изменения реакции процесса на какой-либо сигнал. Хотя прототип системного вызова выглядит довольно пугающе, ничего страшного в нем нет. Приведенное выше описание можно словесно изложить следующим образом:

функция signal, возвращающая указатель на функцию с одним параметром типа int, которая ничего не возвращает, и имеющая два параметра: параметр sig типа int и параметр handler, являющийся указателем на ничего не возвращающую функцию с одним параметром типа int.

Параметр sig — это номер сигнала, обработку которого мы хотим изменить.

Параметр handler описывает новый способ обработки сигнала — это может быть указатель на пользовательскую функцию — обработчик сигнала, специальное значение SIG_DFL или специальное значение SIG_IGN.
Специальное значение SIG_IGN используется для того, чтобы процесс игнорировал поступившие сигналы с номером sig, специальное значение SIG_DFL для восстановления реакции процесса на этот сигнал по умолчанию.

Системный вызов возвращает указатель на старый способ обработки сигнала, значение которого можно использовать для восстановления старого способа в случае необходимости.