Прототип системного вызова
#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 — для восстановления реакции процесса на этот сигнал по умолчанию.
Системный вызов возвращает указатель на старый способ обработки сигнала, значение которого можно использовать для восстановления старого способа в случае необходимости.