Книга: Язык программирования Си. Издание 3-е, исправленное

B9. Сигналы:

B9. Сигналы: <signal.h>

Заголовочный файл <signal.h> предоставляет средства для обработки исключительных ситуаций, возникающих во время выполнения программы, таких как прерывание, вызванное внешним источником или ошибкой в вычислениях.

void (*signal(int sig, void (*handler)(int)))(int)

signal устанавливает, как будут обрабатываться последующие сигналы. Если параметр handler имеет значение SIG_DFL, то используется зависимая от реализации "обработка по умолчанию"; если значение handler равно SIG_IGN, то сигнал игнорируется; в остальных случаях будет выполнено обращение к функции, на которую указывает handler с типом сигнала в качестве аргумента. В число допустимых видов сигналов входят:

SIGABRT аварийное завершение, например от abort;
SIGFPE арифметическая ошибка: деление на 0 или переполнение;
SIGILL неверный код функции (недопустимая команда);
SIGINT запрос на взаимодействие, например прерывание;
SIGSEGV неверный доступ к памяти, например выход за границы;
SIGTERM требование завершения, посланное в программу.

signal возвращает предыдущее значение handler в случае специфицированного сигнала, или SIGERR в случае возникновения ошибки.

Когда в дальнейшем появляется сигнал sig, сначала восстанавливается готовность поведения "по умолчанию", после чего вызывается функция, заданная в параметре handler, т.е. как бы выполняется вызов (*handler)(sig). Если функция handler вернет управление назад, то вычисления возобновятся с того места, где застал программу пришедший сигнал. Начальное состояние сигналов зависит от реализации.

int raise(int sig)

raise посылает в программу сигнал sig. В случае неудачи возвращает ненулевое значение.  

Оглавление книги


Генерация: 0.127. Запросов К БД/Cache: 0 / 2
поделиться
Вверх Вниз