/* * ftelnetd - fake telnet daemon * * daemon_init.c * Starts the server as daemon and put it in background. * * Tue Dec 12 22:47:31 CET 2006 * * by Levent Kayan * levent[at]corehack[dot]org * */ #include "ftelnetd.h" #include "sighandle.h" #include "ferror.h" #include #include #include #define MAXFD 64 int daemon_init() { int i; pid_t pid; if ( (pid = fork()) < 0) { return (-1); } else if (pid) { /* parent terminates */ exit(0); } /* child 1 continues... */ /* become session leader */ if (setsid() < 0) { return (-1); } signal(SIGHUP, SIG_IGN); if ( (pid = fork()) < 0) { return (-1); } else if (pid) { /* child 1 terminates */ exit(0); } /* child 2 continues... * close off file descriptors */ for (i = 0; i < MAXFD; i++) { close(i); } return 0; } /* EOF */