Заглавная страница Избранные статьи Случайная статья Познавательные статьи Новые добавления Обратная связь 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; просмотров: 126; Нарушение авторского права страницы; Мы поможем в написании вашей работы! infopedia.su Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав. Обратная связь - 3.141.201.46 (0.005 с.) |