Ejemplo n.º 1
0
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
}