signal (2)
   обработка сигнала  

Синтаксис
 
    #include <signal.h>

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

Описание
  Системный вызов signal устанавливает новый обработчик сигнала заданного типа.

Параметры
 
signum Тип сигнала. Некоторые типы сигналов в Linux:
SIGKILL Этот сигнал приводит к немедленному завершению процесса. Этот сигнал процесс не может игнорировать или установить для него новый обработчик.
SIGTERM Этот сигнал является запросом на завершение процесса.
SIGCHLD Система посылает этот сигнал процессу при завершении одного из его дочерних процессов.
SIGALRM Доставка этого сигнала планируется функциями alarm и seittimer.
SIGUSR1
SIGUSR2
Эти сигналы зарезервированы для прикладного использования
SIGHUP Система посылает этот сигнал, когда происходит отключение от терминала.
SIGINT Система посылает этот сигнал, когда пользователь нажимает комбинацию клавиш Ctrl+C.
SIGILL Система посылает этот сигнал при попытке выполнить недопустимую операцию.
SIGFPE Система посылает этот сигнал при попытке выполнить недопустимую операцию с плавающей точкой.
SIGSEGV Система посылает этот сигнал при выполнении программой недопустимого обращения к памяти.
SIGPIPE Система посылает этот сигнал при обращении программы к разрушенному потоку данных.
handler Обработчик сигнала или одно из следующих имен:
SIG_IGN - игнорировать сигнал;
SIG_DFL - установить обработку сигнала по умолчанию.

Обработчик сигнала должен быть функцией, объявляемой по такому прототипу:

    void имя_обработчика(int signum);

Аргументом обработчика является тип сигнала. Один и тот же обработчик может быть назначен для сигналов разного типа.

Возвращаемое значение
  При нормальном завершении вызов возвращает адрес старого обработчика данного сигнала, при ненормальном - ошибку SIG_ERR

Типы сигналов

Типы сигналов и способы их возникновения в системе жестко регламентированы. Типы сигналов принято задавать числовыми номерами, в диапазоне от 1 до 31 включительно, или символьными именами, определенными в системных включаемых файлах.

Некоторые наиболее часто употребляемые сигналы (полный список можно получитьвыполнив команду kill -l):

Название Номер Действие по умолчанию Описание Тип
SIGABRT 6 завершение с дампом памяти (образ памяти процесса сохраняется в файле core в текущем рабочем каталоге процесса) Сигнал посылаемый функцией abort() управление
SIGALRM 14 завершение Сигнал истечения времени заданного alarm() уведомление
SIGBUS 7 завершение с дампом памяти Неправильное обращение в физическую память (аппаратная ошибка) исключение
SIGCHLD 17 игнорируется Дочерний процесс завершен или остановлен (изменение состояния дочернего процесса) уведомление
SIGCONT 18 продолжить выполнение Продолжить выполнение ранее остановленного процесса управление
SIGFPE 8 завершение с дампом памяти Ошибочная арифметическая операция исключение
SIGHUP 1 завершение Закрытие терминала уведомление
SIGILL 4 завершение с дампом памяти Недопустимая инструкция процессора исключение
SIGINT 2 завершение Сигнал прерывания (Ctrl-C) с терминала управление
SIGKILL 9 завершение Безусловное завершение (сигнал нельзя перехватить) управление
SIGPIPE 13 завершение Запись в разорванное соедиение (пайп, сокет)(в канал, который никто не читает) уведомление
SIGQUIT 3 завершение с дампом памяти Сигнал «Quit» с терминала (Ctrl-D) управление
SIGSEGV 11 завершение с дампом памяти Нарушение при обращении в память исключение
SIGSTOP 19 остановка процесса Остановка выполнения процесса управление
SIGTERM 15 завершение Сигнал завершения (сигнал по умолчанию для утилиты kill) управление
SIGTSTP 20 остановка процесса Сигнал остановки с терминала (Ctrl-Z). управление
SIGTTIN 21 остановка процесса Попытка чтения с терминала фоновым процессом управление
SIGTTOU 22 остановка процесса Попытка записи на терминал фоновым процессом управление
SIGUSR1 10 завершение Пользовательский сигнал № 1 пользовательский
SIGUSR2 12 завершение Пользовательский сигнал № 2 пользовательский
SIGSYS 31 завершение с дампом памяти Неправильный системный вызов исключение
SIGURG 23 игнорируется На сокете получены срочные данные уведомление
SIGXCPU 24 завершение с дампом памяти Процесс превысил лимит процессорного времени исключение
SIGXFSZ 25 завершение с дампом памяти Процесс превысил допустимый размер файла исключение

См.также
  kill, raise.


Список системных вызовов