Заглавная страница Избранные статьи Случайная статья Познавательные статьи Новые добавления Обратная связь FAQ Написать работу КАТЕГОРИИ: ТОП 10 на сайте Приготовление дезинфицирующих растворов различной концентрацииТехника нижней прямой подачи мяча. Франко-прусская война (причины и последствия) Организация работы процедурного кабинета Смысловое и механическое запоминание, их место и роль в усвоении знаний Коммуникативные барьеры и пути их преодоления Обработка изделий медицинского назначения многократного применения Образцы текста публицистического стиля Четыре типа изменения баланса Задачи с ответами для Всероссийской олимпиады по праву
Мы поможем в написании ваших работ! ЗНАЕТЕ ЛИ ВЫ?
Влияние общества на человека
Приготовление дезинфицирующих растворов различной концентрации Практические работы по географии для 6 класса Организация работы процедурного кабинета Изменения в неживой природе осенью Уборка процедурного кабинета Сольфеджио. Все правила по сольфеджио Балочные системы. Определение реакций опор и моментов защемления |
Разработка фонового процессаСодержание книги
Поиск на нашем сайте К фоновому процессу выставляют такие требования: он должен образовывать собственную сессию и группу процессов, не может принадлежать к ни одной из сессий и групп пользователя и иметь управляющий терминал. Причины выдвижения этих требований приведены ниже. Демон не может иметь управляющий терминал, поскольку не должен реагировать на прерывание в случае попыток введения-выведения с использованием такого терминала. Демон должен быть лидером фоновой группы процессов и лидером новой сессии, чтобы он не мог получать сигналы (например, в случае нажатия Ctrl+С или выходу из системы). После запуска демон закрывает все открыты файлы, особенно стандартные потоки ввода-вывода, поскольку они должны быть закрыты после выхода пользователя из системы, а демон должен продолжать работу и после этого. Для того, чтобы придерживаться всех требований, в демоне нужно выполнить определенную последовательность действий. 1. Сразу после запуска процесс демона должен создать потомка: if ((pid = forko) < 0) return -1; Это нужно для того, чтобы сразу вернуться в командный процессор, выйдя из предка на шаге 2. Чтобы новый процесс гарантированно не мог стать лидером группы процессов, потому что он наследует эту группу от предка - это нужно позже для вызова setsid() на шаге 3. 2. После создания потомка предок должен завершить свою работу: if (pid!= 0) { // предок printf ("демон стартовал из pid=%d\n". pid): exit (0); } 3. Другие шаги происходят в потомке. В нем нужно выполнить определенную последовательность действий. · Создать новую сессию: setsid(); Текущий процесс в результате вызова setsid(), как было сказано раньше, становится лидером новой сессии, лидером группы процессов и не имеет управляющего терминала. Главный смысл этого вызова - отключиться от управляющего терминала и потерять связь с текущей сессией, чтобы не получать никаких сигналов. · Изменить текущий каталог на корневой каталог системы или конкретный рабочий каталог демона: chdir(“/"): Если этого не сделать, текущий каталог демона всегда будет тем, из которого он запущен. Здесь есть риск, что текущим может оказаться каталог, который вмонтирован в файловую систему (в этом случае ее нельзя будет размонтировать, пока демон не закончит работу). · Возможно, закрыть все открыты файлы (файловые дескрипторы): // закрыть заранее определеные дескрипторы for (fd = 0: fd < 3; fd++) close(fd); · Перейти в режим ожидания (уже были рассмотрены разные способы задания ожидания в серверных процессах, самый простой способ - выполнить вызов pause () в цикле): for (;:) pause(); После запуска демон будет лидером сессии (pid=sid), лидером группы процессов (pid=pgid) и не будет иметь управляющего терминала, а его предком станет init, поскольку непосредственный предок прекратил выполнение.
Службы Windows XP Аналогом демонов у Windows XP являются службы (services) - фоновые процессы, которые могут выполняться даже тогда, когда с системой не работает ни один пользователь. Из раздела 2 уже известно о том, что за управление службами отвечает менеджер служб (Service Control Manager). Он принимает управляющие команды от приложений и в соответствии с ними выполняет действия со службами (например, запускает на выполнение или останавливает). Интерфейс пользователя менеджера служб реализован двумя способами: ♦ С с помощью окна управления службами (Services), которое вызывают через подменю Administrative Tools главного меню системы (это окно отображает список служб, дает возможность запускать и останавливать отдельные службы, узнавать об их свойствах и тому подобное); ♦ С помощью утилиты net.exe, что входит в поставку Windows XP; например, команда net start имя_служби дает команду менеджеру запустить соответствующую службу, net stop имя_служби - остановить ее. Для управления службами необходимо иметь административные права в системе.
|
||
|
Последнее изменение этой страницы: 2017-01-19; просмотров: 183; Нарушение авторского права страницы; Мы поможем в написании вашей работы! infopedia.su Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав. Обратная связь - 216.73.217.21 (0.007 с.) |