Перейти к содержанию

HamWay

Members
  • Постов

    1
  • Зарегистрирован

  • Посещение

    Никогда

Сообщения, опубликованные HamWay

  1. Debian4-RC3 (Intel/x86)

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

    Привожу пример кода который также не работает на серваке, а на других работает:

    #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 pid, sid;
    
      /* Ответвляемся от родительского процесса */
      pid = fork();
      if (pid < 0) {
    
        exit(EXIT_FAILURE);
      }
    
      /* Если с PID'ом все получилось, то родительский процесс можно завершить. */
      if (pid > 0) {
    
        exit(EXIT_SUCCESS);
    
      }
        fputs("Go next\n", fpo);
      /* Изменяем файловую маску */
      umask(0);
    
      /* Здесь можно открывать любые журналы */       
    
      /* Создание нового SID для дочернего процесса */
      sid = setsid();
       //fputs(""+sid+"\n", fpo);
      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);
    }
    

    По не обходимости предоставлю все логи и конфиги, пока не монимаю что именно надо

×
×
  • Создать...