netlib.narod.ru< Назад | Оглавление | Далее >

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. В случае неудачи возвращает ненулевое значение.


netlib.narod.ru< Назад | Оглавление | Далее >

Сайт управляется системой uCoz