Вход на хостинг
IT-новости
20.04.2016 iPhone 2017 года поместят в водонепроницаемый корпус из стекла
Линейка iPhone в новом году серьезно поменяется. В этом уверен аналитический исследователь Мин Чи Ку......
30.07.2015 Ищем уникальный контент для сайта
Ищем уникальный контент для сайта Без уникального контента Ваш сайт обречен на то, что его страницы......
}
Инициализируем демон:
init_daemon();
Функция инициализации будет определена ниже.
Демон запустим как дочерний процесс.
pid = fork();
if (pid < 0) {
perror("fork");
exit(1);
}
if (pid==0) {
Отсоединяемся от терминала:
setsid();
Стартуем демон:
start_daemon();
exit(1);
}
Родительский процесс создает PID-файл и записывает в него идентификатор процесса-демона:
pid_file=open(PID,O_CREAT|O_TRUNC|O_RDWR,0644);
if(pid_file < 0) {
perror(PID);
return (-1);
}
if(write(pid_file,(char *)&pid,sizeof(pid_t)) < 0) {
perror(PID);
return (-1);
}
close(pid_file);
}
Режим остановки выполнения процесса-демона
if(!(strcmp(argv[1],"stop"))) {
Для остановки процесса-демона необходимо получить значение его идентификатора.
Это значение извлекаем из PID-файла:
pid_file=open(PID,O_RDONLY);
if(pid_file<0) {
perror(PID);
return (-1);
}
if(read(pid_file,(char *)&pid,sizeof(pid_t)) < 0) {
perror(PID);
return (-1);
}
close(pid_file);
PID-файл нам больше не нужен, удаляем его:
if(unlink(PID) < 0) {
perror(PID);
return (-1);
}
Теперь останавливаем процесс-демон, послав ему сигнал SIGINT:
kill(pid,SIGINT);
}