/* 
 * 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 <stdlib.h>
#include <sys/stat.h>
#include <unistd.h>


#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 */


syntax highlighted by Code2HTML, v. 0.9.1