#include <unistd.h>
#include <stdio.h>

/*----------------------------------------------------------------------------
   Become a daemon: fork, die, setsid, fork, die, disconnect 
------------------------------------------------------------------------------*/

void daemonize(void)
{
   pid_t pid ;

   pid = fork() ;
   if( pid < 0 )  exit(1) ;   /* fork failed */
   if( pid > 0 ) _exit(0) ;   /* parent exits */

   setsid() ;

   pid = fork() ;
   if( pid < 0 )  exit(1) ;   /* fork failed */
   if( pid > 0 ) _exit(0) ;   /* parent exits */

   chdir("/") ;
   freopen("/dev/null","r",stdin)  ;
   freopen("/dev/null","w",stdout) ;
   freopen("/dev/null","w",stderr) ;
}


syntax highlighted by Code2HTML, v. 0.9.1