вторник, 15 июля 2014 г.

Простой демон

Функция создания демона

int daemonize()
{
 int pid = fork();
 if (pid == -1) // ошибка
 {
  printf("Start Daemon Error: %s\n", strerror(errno));
  return 1;
 }
 else if (!pid) // если это потомок
 {
  umask(0);
  setsid();
  chdir("/");
  close(STDIN_FILENO);
  close(STDOUT_FILENO);
  close(STDERR_FILENO);
  return 0;
 }
 else // если это родитель
 {
  // завершим процесс
  exit(0);
 }
 
}

Использование

#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <unistd.h>
#include <errno.h>
#include <sys/stat.h>

int main(int argc, char** argv)
{
 //Создаем из процесса демона
 int res = daemonize();
 if(res)
  return -1;
 
 //Основной код программы ...
 return 0;
}

Комментариев нет:

Отправить комментарий