SObjectizer
5.1
|
Обработчик прерываний.
В различных ОС есть несколько способов подать приложению сигнал о необходимости за- вершения работы по каким-либо причинам. Например, сигнал о нажатии пользователем Ctrl+C в консоли приложения или уведомление о том, что ОС начинает перезагрузку. SObjectizer не обрабатывает данные сигналы, оставляя реакцию на них на откуп приложению. В so_sysconf входят несколько агентов, облегчающих обработку подобных сигналов. Центральным из кото- рых является агент a_breakflag_handler.
Подсистема so_sysconf различает два типа сигналов прерывания приложения:
По умолчанию so_ sysconf не перехватывает данные сигналы, что приводит к немед- ленному завершению приложения операционной системой. Если приложение вызывает so_sysconf_4::setup_signal_ handlers(), то данные сигналы перехватываются и выставляются флаги, которые соответствуют типу прерывания приложения. Проверить установку соответствующего флага можно обратившись к so_sysconf_4::is_set(). Обработчики сигналов прерывания приложения только перехватывают сигналы операционной системы и, кроме выставления флагов, не предпринимают никаких действий. Для типа сигнала so_sysconf_4::user_break это означает, что приложение просто не будет реагировать на Ctrl+C, Ctrl+Break. Для того, чтобы по сигналу прерывания приложения инициировать корректное завершение приложения предназначена библиотека so_syscon_breakflag_handler. Она содержит две кооперации:
Для задействования данных обработчиков нужно загрузить библиотеку so_sysconf.break_handler и зарегистрировать кооперации so_sysconf_4::breakflag_handler::user_break_handler и/или so_sysconf_4::breakflag_handler::system_break_handler. Если какая-то кооперация не зарегистрирована, то сигналы соответствующих типов прерывания будут игнорироваться приложением.
Документация по SObjectizer v.5.1 'Джимара'. Последние изменения: Ср 15 Май 2013 12:56:21. Создано системой 1.8.3.1 |