Обработчик команд управления 


Мы поможем в написании ваших работ!



ЗНАЕТЕ ЛИ ВЫ?

Обработчик команд управления



Функцию-обработчик команд управления вызывают асинхронной в случае получения службой такой команды (например, с помощью окна управления службами или утилиты net. exe). Эта функция похожа обработчик сигналов в UNIX или обработчик консольных команд Windows XP. Она должна принимать один параметр, который отображает команду управления, и выполнять действия в зависимости от значения этой команды.

В приведенном примере эта функция обрабатывает только команду Stop Service (SERVICE_CONTROL_ST0P); но можно обрабатывать и другие команды, например Pause/continue или Shutdown, которую подают в случае прекращения работы ОС.

В коде обработчика изменяют статус службы и значения глобальной переменной running, которое проверяют в основной функции службы.

void WINAPI svc_ctrlhandler(DWORD ctl) {

if (Ctl - Service_CONTROL_ST0P) {

status.dwCurrentState - SERVICE_STOPPED:

SetServiceStatus (sth. &status);

running = false;

}

}

Исключение службы

Для исключения службы из реестра используют функцию DeleteService(), куда необходимо передать дескриптор службы. Его нужно получить с помощью функции OpenService(), что как параметры принимает дескриптор менеджера служб и имя имеющейся службы:

SC_HANDLE mh – OpenSCManager(NULL. NULL. SC_MANAGER_ALL_ACCESS);

SC_HANDLE sh = OpenService(mh."mysvc",SERVICE_ALL_ACCESS);

Deleteservice(sh);

Closeservicehandle(sh);

Отметим, что если служба в момент исключения находилась в состоянии выполнения, ее лишь помечают для исключения. Фактическое исключение происходит во время следующей загрузки системы.

Выводы

♦ Терминальное введение-выведение реализует взаимодействие с алфавитно-цифровыми устройствами. У современных ОС такие устройства чаще всего являются эмуляторами терминала, работу с которыми осуществляют по одним и тем же правилам. На основе терминального введения-выведения реализуют командный интерфейс пользователя ОС в виде командных интерпретаторов.

 

♦ Есть разные подходы к организации графического интерфейса пользователя, самой распространенной из них является реализация такого интерфейса как интегрированной части системы, которая работает в режиме ядра (так сделано в системах линии Windows XP), и реализация средств его поддержки в режиме пользователя в виде набора библиотек и утилит (примером является система X Window).

 

♦ Разработка фоновых применений, которые не взаимодействуют с пользователем, осуществляется по особенным правилам. В UNIX-системах для таких применений закрыта возможность интерактивного обмена данными с пользователем, в системах линии Windows XP есть специальный компонент, ответственный за управление ими.

Контрольные вопросы и задания

1. Приведите пример программного канала, один из элементов которого должен завершиться аварийно через получение сигнала SIGPIPE. Используйте синтаксис каналов командного интерпретатора.

2. Разработайте применение для Linux и Windows XP, которое:

а) создает потомка, переадресовывает свой стандартный вывод на стандартный ввод этого потомка, выводит сообщение на стандартный вывод и возобновляет предыдущее состояние вывода. Потомок должен отображать на стандартный вывод все данные, полученные на его стандартный ввод;

б) переадресовывает стандартный вывод и стандартный поток сообщений об ошибках в конец файла, имя которого задано в командной строке, после чего выводит сообщение на стандартный вывод и в стандартный поток уведомлений об ошибках;

в) создает двух потомков и переадресовывает стандартный вывод одного из них на стандартный ввод другого (связывая их безымянным каналом). Первый потомок должен выводить произвольное сообщение на стандартный вывод, второй, - отображать на стандартный вывод все данные, полученные на стандартный ввод;

г) хранит стандартный вывод потомка в строке символов и отображает содержание этой строки (так может быть реализована командная подстановка). Потомок должен выводить произвольное сообщение на стандартный вывод.

3. Модифицируйте применение задания 2, бы из раздела 17 так, чтобы стандартный поток сообщений об ошибках был направлен на сервер (заданный ІР-адресом и портом) с использованием сокетов. Разработайте сервер, который будет хранить полученную информацию в файле.

4. Модифицируйте командный интерпретатор для Linux и Windows XP, разработанный во время выполнения задания 10 из раздела 3 и задания 10 из раздела 14, дополнив его функцией переадресування введения-выведения, каналов и командной подстановки. Во время решения задачи пользуйтесь результатами выполнения задания 2 из раздела 17.

5. Сессия командного интерпретатора запущена для отдаленного телнет-клиента. Опишите, какие компоненты ОС на локальном и отдаленном хостах отвечают за отображение стандартного вывода применений, запущенных в этой сессии.

6. Перечислите общие черты и отличия оконной подсистемы Windows XP и системы X Window. Какие преимущества и недостатки имеет каждая из систем?

7. Сессия командного интерпретатора, запущенная на отдаленном хости, отображается в окне эмулятора терминала xterm. Опишите, какие компоненты ОС на локальном и отдаленном хостах отвечают за отображение стандартного вывода применений, запущенных в этой сессии.

8. В какой ситуации стандартный вывод Х-клиента автоматически отображается на текстовой консоли, из которой был запущен Х-сервер, а в которой - нет? Можно ли обеспечить отображение вывода Х-клиента на заданную текстовую виртуальную консоль?

9. Разработайте фоновое применение для Linux и Windows XP, что отслеживает все изменения файлов в заданном каталоге (создание, исключение, изменение размера и тому подобное). Имя каталога может быть задано в командной строке, для Windows XP допустимое его задання в системном реестре. Каждое изменение регистрируют в файле в формате "время: имъя_файлу характер_змини".

10. Модифицируйте сервер, полученный для задания 11 из раздела 16, реализовав его как фоновый процесс для Linux и Windows XP.

 

 



Поделиться:


Последнее изменение этой страницы: 2017-01-19; просмотров: 114; Нарушение авторского права страницы; Мы поможем в написании вашей работы!

infopedia.su Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав. Обратная связь - 18.220.160.216 (0.009 с.)