Студопедия

КАТЕГОРИИ:

АстрономияБиологияГеографияДругие языкиДругоеИнформатикаИсторияКультураЛитератураЛогикаМатематикаМедицинаМеханикаОбразованиеОхрана трудаПедагогикаПолитикаПравоПсихологияРиторикаСоциологияСпортСтроительствоТехнологияФизикаФилософияФинансыХимияЧерчениеЭкологияЭкономикаЭлектроника


Процессы-демоны. Система журнализации.




Под демоном понимается процессы, не предназначенные для непосредств. взаимодействия с пользователями с-мы. Существует демоны внутрисистемные. Демоны обычно рассчитаны на длительное функционирование и в некоторых с-мах огни могут работать годами без перезапуска => при его запуске принимаются меры чтобы его функционирование не мешало работе проуесса и администрированию системы.

Текущий каталог обычно меняется на корневой (чтобы не мешать админу удалять каталоги и т.д.). Демону не нужен управляющий терминал, дескрипторы стандартного I/O и вывод ошибок, но желательно чтобы дескрипторы 0,1,2 оставались открытыми, потому что демоны обычно работают с файлами т.к. если файл будет открыт с дескриптором 0,1,2 , то какая-нить процедура может случайно испортить файл =>все 3 дескриптора связывают с устройством dev/NULL – символьное потоковое уст-во, яв-ся чисто логическим. Все что в него записывается – исчезает.

Чтобы действие производимые с терминалом не влияли надемона, он обычно работает в отдельном сеансе.

Процедура старта процесса-демона:

Close(0);

…(1); // Закрываем стандартные дескрипторы

…(2);

// Связываем с dev/NULL:

Open(“/dev/NULL”,O_RDONLY); - чтение

Open(“/dev/NULL”,O_WRONLY); - запись

Open(“/dev/NULL”,O_WRONLY); - ошибки

// Дальше fork и запуск

If (fork()>0)

exit(0); - завершение родит. процесса.

Setsid();

Chdir(“/”);

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

Void openlog (const char *ident, int option, int facility); - открытие

Void syslog (int priority, const char *format,..); - послать сообщение демону

Void closelog (void); - закрытие

 

Есть еще модификация syslog – либо пишет сообщение в системный журнал, либо отправляет его на консоль, либо перенаправляет в соотв-е со списком пользователей системы (etc/syslog.conf).

Параметры:

· Ident – это строка будет выдаваться перед каждым сообщением программы.

Чтобы начать работу с журналом прога вызывает openlog, передает первым параметром свое название , указ-ся некоторые дополн опции.

· Через параметр facility указывается к какой подсистеме относится данная программа. Если подсистема не имеет спец значение, то ставится LOG_USER.

Функция syslog похожа на printf.

· Priority – степень важности сообщения:

LOG_ERR – ошибки

LOG_WARN – предупреждения

LOG_INFO – информационные сообщения

Сисадмин может настроить все т.о., чтобы в файл журнала попадали сообщения с опред уровнем важности. Например: syslog(LOG_INFO,”demon with pid=%d”, getpid());

· Функция closelog завершает работу с системой журнализации, закрывает открытые файлы и т.д.

 

Управление процессами-демонами можно осуществлять через сигналы SIG_HUB демон переписывает конфигурац. Файл и при необходимости даже меняется режим работы.

 


Поделиться:

Дата добавления: 2015-01-14; просмотров: 144; Мы поможем в написании вашей работы!; Нарушение авторских прав





lektsii.com - Лекции.Ком - 2014-2024 год. (0.006 сек.) Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав
Главная страница Случайная страница Контакты