Генерация управляющих событий консоли

Генерация управляющих событий консоли

Прерывание выполнения процесса извне может порождать проблемы, поскольку это лишает процесс возможности произвести необходимую завершающую обработку данных и очистку ресурсов. Воспользоваться SEH в данном случае нельзя ввиду того, что не существует общего метода, который позволял бы одному процессу возбуждать исключения в другом[25]. В то же время, с учетом некоторых ограничений, механизм управляющих событий консоли делает возможной передачу одним процессом другому управляющих сигналов, или событий, консоли. В программе 4.5 было продемонстрировано, как установить обработчик для перехвата сигналов и организовать генерацию исключений этим обработчиком. В указанном примере сигнал генерировался по приказу пользователя средствами пользовательского интерфейса.

Таким образом, вполне можно добиться того, чтобы один процесс генерировал сигнал, соответствующий определенному событию, в другом указанном процессе или группе процессов. Вспомните флаг CREATE_NEW_PROCESS_GROUP функции CreateProcess. Если этот флаг установлен, то идентификатор нового процесса идентифицирует группу процессов и является корневым (root) процессом данной группы. Все новые процессы, создаваемые данным родительским процессом, будут автоматически попадать в эту группу до тех пор, пока при вызове функции CreateProcess не будет использован флаг CREATE_NEW_PROCESS_GROUP. Сгруппированные процессы аналогичны группам процессов в UNIX.

Процесс может генерировать события CTRL_C_EVENT или CTRL_BREAK_EVENT в указанной группе процессов, идентифицируя ее с помощью идентификатора корневого процесса. Консоль целевых процессов должна совпадать с консолью процесса, генерирующего событие. В частности, вызывающий процесс не может быть создан с использованием собственной консоли (посредством флагов CREATE_NEW_CONSOLE или DETACHED_PROCESS). 

BOOL GenerateConsoleCtrlEvent(DWORD dwCtrlEvent, DWORD dwProcessGroup) 

Тогда значением первого параметра должно быть либо CTRL_C_EVENT, либо CTRL_BREAK_EVENT. Второй параметр идентифицирует группу процессов. 

Поделитесь на страничке

Следующая глава >

Похожие главы из других книг

Снятие дорожек в консоли

Из книги 200 лучших программ для Linux автора Яремчук Сергей Акимович

Снятие дорожек в консоли Наиболее популярной программой, позволяющей снять дорожки с аудиодиска, является консольная утилита со смешным названием cdparanoia (http://www.xiph.org/paranoia/). Она появилась как набор патчей к другой утилите – CDDA2WAV (сайт http://www.cdda2wav.de/), предназначенной для


6.1. Русификация консоли

Из книги Linux-сервер своими руками автора Колисниченко Денис Николаевич

6.1. Русификация консоли Выбор языка системы производится при установке системы или при помощи соответствующих конфигураторов: keyboarddrake в Linux Mandrake и setup в Linux Red Hat. В случае некорректного отображения русских символов нужно подправить файл /etc/inputrc (см. листинг 6.1), изменив


Команды консоли

Из книги Asterisk™: будущее телефонии Второе издание автора Меггелен Джим Ван

Команды консоли Двоичный файл Asterisk по умолчанию располагается по адресу /usr/ sbin/asterisk. Если запустить файл /usr/sbin/asterisk, Asterisk загрузится как программа-демон. Существует также несколько ключей, которые позволяют (повторно) запускать CLI Asterisk, задавать степень детальности вывода


Обработчики управляющих сигналов консоли

Из книги Системное программирование в среде Windows автора Харт Джонсон М

Обработчики управляющих сигналов консоли Обработчики исключений могут реагировать на самые разнообразные события, но они не в состоянии обнаруживать такие ситуации, как выход пользователя из системы или нажатие комбинации клавиш <Ctrl+C> на клавиатуре с целью


Пример: обработчик управляющих сигналов консоли

Из книги Разработка приложений в среде Linux. Второе издание автора Джонсон Майкл К.

Пример: обработчик управляющих сигналов консоли В программе 4.5 организован бесконечный цикл, в котором каждые 5 секунд вызывается функция Веер, подающая звуковой сигнал. Пользователь может завершить выполнение программы, нажав комбинацию клавиш <Ctrl+C> или закрыв


Обработчик управляющих команд службы

Из книги VBA для чайников автора Каммингс Стив

Обработчик управляющих команд службы Обработчик управляющих команд службы, то есть функция косвенного вызова, определяемая с помощью функции RegisterServiceCtrlHandlerEx, имеет следующий прототип:  DWORD WINAPI HandlerEx(DWORD dwControl, DWORD dwEventType, LPVOID lpEventData, LPVOID lpContext)  dwControl — обозначает


21.3. Возможности консоли Linux

Из книги Ubuntu 10. Краткое руководство пользователя автора Колисниченко Д. Н.

21.3. Возможности консоли Linux Консоль Linux, как и большинство терминалов, является модальной: ее взаимодействие с данными зависит от того, в каком режиме она находится. По умолчанию она выводит на экран передаваемые символы, пока не получает управляющий символ или символ


Укрощение диких программ с помощью управляющих структур

Из книги Недокументированные и малоизвестные возможности Windows XP автора Клименко Роман Александрович

Укрощение диких программ с помощью управляющих структур Управляющие структуры можно разбить на три главные группы - условные операторы, циклы и операторы With.* Условный оператор определяет, какую из ветвей программного кода выполнять, в зависимости от того, какое


12.4. Запись CD/DVD из консоли

Из книги автора

12.4. Запись CD/DVD из консоли Научиться использовать программы Brasero и Nautilus вы смогли бы и без моих наставлений. Так что же, место, занимаемое в книге этой главой, потрачено впустую? Нет, поскольку сейчас мы рассмотрим программы, предназначенные для записи CD/DVD-дисков из консоли.


Запуск консоли

Из книги автора

Запуск консоли После ввода в командной строке команды eventvwr.msc консоль управления Microsoft просматривает две дополнительные ветви реестра (естественно, что также она просматривает ветви реестра, относящиеся к настройке самой оснастки Просмотр событий).Во-первых,


Запуск консоли gpedit.msc

Из книги автора

Запуск консоли gpedit.msc После запуска консоли gpedit.msc перед вами отобразится окно, изображенное на рис. 11.8.  Рис. 11.8. Окно консоли Групповая политика ПРИМЕЧАНИЕ С помощью добавления данной оснастки в консоль управления Microsoft можно просмотреть журналы событий другого