По-умолчанию, 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 |