По-умолчанию, SO SysConf не перехватывает данные сигналы, что приводит к немедленному завершению приложения операционной системой. Если приложение вызывает so_sysconf_2::setup_signal_handlers(), то данные сигналы перехватываются и выставляются флаги, которые соответствуют типу прерывания приложения. Проверить установку соответствующего флага можно обратившись к so_sysconf_2::is_set().
Обработчики сигналов прерывания приложения только перехватывают сигналы операционной системы и, кроме выставления флагов, не предпринимают никаких действий. Для типа сигнала so_sysconf_2::user_break это означает, что приложение просто не будет реагировать на Ctrl+C, Ctrl+Break.
Для того, чтобы по сигналу прерывания приложения инициировать корректное завершение приложения предназначена библиотека so_sysconf.breakflag_handler. Она имеет псевдоним "so_sysconf_2::breakflag_handler" и содержит две кооперации:
Для задействования данных обработчиков нужно загрузить библиотеку so_sysconf.break_handler и зарегистрировать кооперации "so_sysconf_2::breakflag_handler::user_break_handler" и/или "so_sysconf_2::breakflag_handler::system_break_handler". Например, указав в sysconf.cfg:
|#
Загрузка и инициализация средств обработки прерывания приложения.
Содержит кооперации:
so_sysconf_2::breakflag_handler::user_break_handler
so_sysconf_2::breakflag_handler::system_break_handler
#|
{load-dll "so_sysconf.breakflag_handler"
{alias "so_sysconf_2::breakflag_handler"}
{os-name-convert "simple" }
}
|| Обработчик прерывания приложения операционной системой.
{reg-coop "so_sysconf_2::breakflag_handler::system_break_handler"
}
|| Обработчик прерывания приложения пользователем.
{reg-coop "so_sysconf_2::breakflag_handler::user_break_handler"
}
Если какая-то кооперация не зарегистрирована, то сигналы соответствующих типов прерывания будут игнорироваться приложением.
Документация по so_sysconf_2 v.2.4.0. Последние изменения: Wed Oct 31 18:55:07 2007. Создано системой
1.5.4
|
|