Обработка сигналов прерывания приложения

SO SysConf различает два типа сигналов прерывания приложения:

По-умолчанию, 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. Создано системой  doxygen1.5.4 Intervale SourceForge.net Logo