Вход на хостинг
IT-новости
20.04.2016 iPhone 2017 года поместят в водонепроницаемый корпус из стекла
Линейка iPhone в новом году серьезно поменяется. В этом уверен аналитический исследователь Мин Чи Ку......
30.07.2015 Ищем уникальный контент для сайта
Ищем уникальный контент для сайта Без уникального контента Ваш сайт обречен на то, что его страницы......
pid = fork();
if (pid < 0) {
perror("fork");
return -1;
}
if (pid == 0) { // дочерний процесс
setsid(); // отсоединяемся от терминала
start_daemon();
}
return 0;
}
Функция start_daemon() выполняет следующие задачи:
n перехватывает все сигналы;
n для сигнала SIGUSR1 определяет новый обработчик;
n открывает исполняемый файл программы, находящийся в текущем каталоге;
n запускает на выполнение бесконечный цикл.
void start_daemon()
{
int i, out;
sigset_t mask;
static struct sigaction act;
sigfillset(&mask);
sigdelset(&mask, SIGUSR1);
/* Блокируем все сигналы */
sigprocmask(SIG_SETMASK, &mask, NULL);
/* Определяем новый обработчик для SIGUSR1 */
act.sa_handler = stop_daemon;
sigaction(SIGUSR1, &act, NULL);
/* Открываем исполняемый файл программы */
out = open("./sfc", O_RDONLY);
if(out < 0) perror("open");