linux 进程后台化函数

Linux 进程后台化函数


void daemon_mode(void) 
{
  int fr=0;

  fr = fork();
  if( fr < 0 )
  {
    fprintf(stderr, "fork() failed\n");
    exit(1);
  }
  
  if ( fr > 0 ) 
  {
    exit(0);
  }

  if( setsid() < 0 ) 
  {
    fprintf(stderr, "setsid() failed\n");
    exit(1);
  }

  fr = fork();
  if( fr < 0 ) 
  {
    fprintf(stderr, "fork() failed\n");
    exit(1);
  }
  
  if ( fr > 0 ) 
  {
    fprintf(stderr, "forked to background (%d)\n", fr);
    exit(0);
  }

  umask(0);

  chdir("/");
  close(0);
  close(1);
  close(2);

  open("/dev/null", O_RDWR);
  dup(0);
  dup(0);

}


你可能感兴趣的:(linux)