Как добавить демона в автозагрузку?
Что делать, если в процессе работы произошла ошибка и демон рухнул?
Каким образом обновить конфигурацию демона без прерывания его работы?
В рамках данной части рассмотрим следующие моменты:
Принцип работы демона.
Основы разработки мониторинга состояния демона.
Обработка ошибок при работе, с подробным отчетом в лог.
Некоторые вопросы связанные с ресурсами системы.
Для наглядности будет показан исходный код следующих частей:
Шаблон основной программы.
Шаблон функции мониторинга работы демона.
Шаблон функции обработки ошибок.
Ряд вспомогательных функций.
Принцип работы демона.
По суди демон это обычная программа выполняющаяся в фоновом режиме. Но так как наш демон будет запускаться из init.d, то на него накладываются определенные ограничения:
Демон должен сохранить свой PID в файл, для того чтобы потом можно было его корректно остановить.
Необходимо выполнить ряд подготовительных операций для начала работы в фоновом режиме.
В нашей модели демон будет функционировать по следующему алгоритму:
Отделение от управляющего терминала и переход в фоновый режим.
Разделение на две части: родитель(мониторинг) и потомок(функционал демона).
Мониторинг состояния процесса демона.
Обработка команды обновления конфига.
Обработка ошибок.
Шаблона программы.
Данный код будет осуществлять все действия, которые необходимы для удачного запуска демона.
int main(int argc, char** argv)
{
int status;
int pid;
// если параметров командной строки меньше двух, то покажем как использовать демона
if (argc != 2)
{
printf("Usage: ./my_daemon filename.cfg\n");
return -1;
}
// загружаем файл конфигурации
status = LoadConfig(argv[1]);
Read more: Habrahabr.ru
QR: