Chinaunix首页 | 论坛 | 博客
  • 博客访问: 306884
  • 博文数量: 214
  • 博客积分: 4258
  • 博客等级: 上校
  • 技术积分: 2021
  • 用 户 组: 普通用户
  • 注册时间: 2010-12-02 09:16
个人简介

http://blog.csdn.net/ly21st http://ly21st.blog.chinaunix.net

文章分类

全部博文(214)

文章存档

2018年(16)

2015年(1)

2014年(2)

2012年(22)

2011年(173)

分类: LINUX

2011-09-24 13:52:43

#include  "unp.h"

#include 

 

#define MAXFD   64

 

extern int daemon_proc; /* defined in error.c */

 

int

daemon_init(const char *pname, int facility)

{

   int     i;

   pid_t   pid;

 

   if ( (pid = Fork()) < 0)

     return (-1);

   else if (pid)

     _exit(0);      /* parent terminates */

 

   /* child 1 continues... */

 

   if (setsid() < 0)      /* become session leader */

     return (-1);

 

   Signal(SIGHUP, SIG_IGN);

   if ( (pid = Fork()) < 0)

     return (-1);

   else if (pid)

     _exit(0);      /* child 1 terminates */

 

   /* child 2 continues... */

 

   daemon_proc = 1;       /* for err_XXX() functions */

 

   chdir("/");         /* change working directory */

   umask(0);

 

   /* close off file descriptors */

   for (i = 0; i < MAXFD; i )

     close(i);

 

   /* redirect stdin, stdout, and stderr to /dev/null */

   open("/dev/null", O_RDONLY);

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

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

 

   openlog(pname, LOG_PID, facility);

 

   return (0);         /* success */

}

 

阅读(274) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~