Для оповещения о некоторых событиях системы и коммуникации между процессами используется механизм сигналов. Послать сигнал может сам процесс (например, при делении на 0), ядро (например, при сбое оборудования), пользователь или другой процесс (например, для прерывания выполнения некоторой задачи). В первом случае сигнал называется синхронным, во втором и третьем — асинхронным.
Если в программе, породившей процесс, определены некоторые действия при получении определенного сигнала, т.е назначена подпрограмма обработки, то после ее вызова ей предоставляется информация о контексте, в котором был сгенерирован сигнал. Иначе ядро от имени процесса выполнит действия, определенные по умолчанию для этого сигнала.
Получив сигнал, процесс может его игнорировать или вызвать обработчик. Процедура вызова обработчика называется перехватом сигнала. Когда выполнение обработчика завершается, процесс возобновляется с той точки, где был получен сигнал. Некоторые сигналы игнорировать или перехватить невозможно.
Список всех сигналов в системе можно посмотреть командой
kill -l
Например, в Alt-Linux определены 64 сигнала.
Имена сигналов начинаются с SIG; эту приставку часто опускают, называя, например, сигнал SIGHUP просто HUP.
Описание некоторых сигналов:
SIGHUP (1). Многие демоны воспринимают как команду сброса и перечитывают свои конфигурационные файлы. Иногда используется для уничтожения связанных с терминалом процессов.
SIGKILL (9). Не блокируется и приводит к безусловному завершению процесса на уровне ядра.
SIGINT (2). Посылается драйвером терминала при нажатии на <Ctrl+C> и служит запросом на завершение текущей операции. Простые программы должны завершить работу или позволить уничтожить себя стандартному обработчику сигнала. Программы, в которых есть режим командной строки, должны прекратить текущую операцию, выполнить очистку и снова перейти в режим ожидания.
SIGTERM (15). Запрос на завершение программы. Предполагается, что получивший его процесс осуществляет очистку экрана и завершается.
SIGQUIT (3). Подобен сигналу SIGTERM, но стандартный обработчик сигнала создает дамп памяти. Вызывается нажатием сочетания клавиш <Ctrl+\(обратный слэш)>. Дамп памяти — это файл, содержащий образ памяти процесса. Обычно используется для отладки.
SIGTSTP (18 или 20 или 24). Запрос на останов по нажатию <Ctrl+Z>. Выполняются операции очистки, затем процесс сам себе посылает сигнал SIGSTOP, который останавливает выполнение процесса до получения SIGCONT, который разрешает продолжить выполнение.
У ряда сигналов номера могут меняться в зависимости от типа оборудования. Пользователь может послать сигнал процессу с идентификатором PID командой