Генерация управляющих событий консоли
Генерация управляющих событий консоли
Прерывание выполнения процесса извне может порождать проблемы, поскольку это лишает процесс возможности произвести необходимую завершающую обработку данных и очистку ресурсов. Воспользоваться 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. Второй параметр идентифицирует группу процессов.
Более 800 000 книг и аудиокниг! 📚
Получи 2 месяца Литрес Подписки в подарок и наслаждайся неограниченным чтением
ПОЛУЧИТЬ ПОДАРОКЧитайте также
Обработчики управляющих сигналов консоли
Обработчики управляющих сигналов консоли Обработчики исключений могут реагировать на самые разнообразные события, но они не в состоянии обнаруживать такие ситуации, как выход пользователя из системы или нажатие комбинации клавиш <Ctrl+C> на клавиатуре с целью
Пример: обработчик управляющих сигналов консоли
Пример: обработчик управляющих сигналов консоли В программе 4.5 организован бесконечный цикл, в котором каждые 5 секунд вызывается функция Веер, подающая звуковой сигнал. Пользователь может завершить выполнение программы, нажав комбинацию клавиш <Ctrl+C> или закрыв
Обработчик управляющих команд службы
Обработчик управляющих команд службы Обработчик управляющих команд службы, то есть функция косвенного вызова, определяемая с помощью функции RegisterServiceCtrlHandlerEx, имеет следующий прототип: DWORD WINAPI HandlerEx(DWORD dwControl, DWORD dwEventType, LPVOID lpEventData, LPVOID lpContext) dwControl — обозначает
21.3. Возможности консоли Linux
21.3. Возможности консоли Linux Консоль Linux, как и большинство терминалов, является модальной: ее взаимодействие с данными зависит от того, в каком режиме она находится. По умолчанию она выводит на экран передаваемые символы, пока не получает управляющий символ или символ
Команды консоли
Команды консоли Двоичный файл Asterisk по умолчанию располагается по адресу /usr/ sbin/asterisk. Если запустить файл /usr/sbin/asterisk, Asterisk загрузится как программа-демон. Существует также несколько ключей, которые позволяют (повторно) запускать CLI Asterisk, задавать степень детальности вывода
6.1. Русификация консоли
6.1. Русификация консоли Выбор языка системы производится при установке системы или при помощи соответствующих конфигураторов: keyboarddrake в Linux Mandrake и setup в Linux Red Hat. В случае некорректного отображения русских символов нужно подправить файл /etc/inputrc (см. листинг 6.1), изменив
Запуск консоли
Запуск консоли После ввода в командной строке команды eventvwr.msc консоль управления Microsoft просматривает две дополнительные ветви реестра (естественно, что также она просматривает ветви реестра, относящиеся к настройке самой оснастки Просмотр событий).Во-первых,
Запуск консоли gpedit.msc
Запуск консоли gpedit.msc После запуска консоли gpedit.msc перед вами отобразится окно, изображенное на рис. 11.8. Рис. 11.8. Окно консоли Групповая политика ПРИМЕЧАНИЕ С помощью добавления данной оснастки в консоль управления Microsoft можно просмотреть журналы событий другого
Снятие дорожек в консоли
Снятие дорожек в консоли Наиболее популярной программой, позволяющей снять дорожки с аудиодиска, является консольная утилита со смешным названием cdparanoia (http://www.xiph.org/paranoia/). Она появилась как набор патчей к другой утилите – CDDA2WAV (сайт http://www.cdda2wav.de/), предназначенной для
Укрощение диких программ с помощью управляющих структур
Укрощение диких программ с помощью управляющих структур Управляющие структуры можно разбить на три главные группы - условные операторы, циклы и операторы With.* Условный оператор определяет, какую из ветвей программного кода выполнять, в зависимости от того, какое
12.4. Запись CD/DVD из консоли
12.4. Запись CD/DVD из консоли Научиться использовать программы Brasero и Nautilus вы смогли бы и без моих наставлений. Так что же, место, занимаемое в книге этой главой, потрачено впустую? Нет, поскольку сейчас мы рассмотрим программы, предназначенные для записи CD/DVD-дисков из консоли.