компиляция демона и его работа

Тема в разделе "FreeBSD", создана пользователем HamWay, 20 дек 2008.

  1. HamWay

    HamWay Guest

    Здравствуйте, у меня возникла такая проблема демон не нможет отделиться от родительского процесса, весь код брал из "Linux Daemon HOWTO". Что самое интересное это не первый демон которого я делаю, но проблема возникла впервые. На другом сервере этот демон работает успешно. К томуже все старые демоны что были на этом сервере перестали работать подскажите в чем может быть причина где рыть.

    Привожу пример кода который также не работает на серваке, а на других работает:
    PHP:
    #include <sys/types.h>
    #include <sys/stat.h>
    #include <stdio.h>
    #include <stdlib.h>
    #include <fcntl.h>
    #include <errno.h>
    #include <unistd.h>
    #include <syslog.h>
    #include <string.h>

    int main(void) {

        
    FILE *fpo;
         
    /* Наши ID процесса и сессии */
      
    pid_t pidsid;

      
    /* Ответвляемся от родительского процесса */
      
    pid fork();
      if (
    pid 0) {

        exit(
    EXIT_FAILURE);
      }

      
    /* Если с PID'ом все получилось, то родительский процесс можно завершить. */
      
    if (pid 0) {

        exit(
    EXIT_SUCCESS);

      }

      
    /* Изменяем файловую маску */
      
    umask(0);

      
    /* Здесь можно открывать любые журналы */        

      /* Создание нового SID для дочернего процесса */
      
    sid setsid();

      if (
    sid 0) {

        
    /* Журналируем любой сбой */
        
    exit(EXIT_FAILURE);
      }

      
    /* Изменяем текущий рабочий каталог */
      
    if ((chdir("/")) < 0) {
        
    /* Журналируем любой сбой */
        
    exit(EXIT_FAILURE);
      }
     
    /* Закрываем стандартные файловые дескрипторы */
      
    close(STDIN_FILENO);
      
    close(STDOUT_FILENO);
      
    close(STDERR_FILENO);
      
    /* Специфичная для демона инициализация проходит тут */

      /* Большой Цикл */
      
    while (1) {
      
    fpo fopen("/var/www/html/_g7_dev/1_18e/log/deamon.log""a");
        
    fputs("Script worked\n"fpo);
        
    sleep(5); /* ждем 30 секунд */
      
    fclose(fpo);
      }
      
      exit(
    EXIT_SUCCESS);
    }
     

Поделиться этой страницей