int main(int argc, char **argv) { #ifdef DAEMON /* отделяемся от родительского процесса */ int pid = fork(); switch (pid) { case 0: // child { umask(0); //777 setsid(); // Создание нового SID для дочернего процесса /*Закрываем стандартные файловые дескрипторы*/ close (STDIN_FILENO); close (STDOUT_FILENO); close (STDERR_FILENO); signal(SIGHUP, signal_handler); signal(SIGTERM, signal_handler); openlog("daemon", LOG_CONS | LOG_PID | LOG_NDELAY, LOG_LOCAL1); #endif // CODE dmn = Daemon(); dmn.start(); exit(0); #ifdef DAEMON break; } case -1: // error! exit(EXIT_FAILURE); /*Если с PID ’ ом в с е получилось , то родительский процесс можно завершить .*/ default:// parent return 0; } #endif }