#include sys/types.h>
#include signal.h>
#include unistd.h>
#include syslog.h>
#define MAXFD 64
void daemon_init(const char* pname, int facility){
int i;
pit_t pid;
/*fork(),终止父进程*/
if(pid=fork()){
exit(0);
}
/*第一子进程*/
setsid();
signal(SIGHUP,SIG_IGN);
/*fork()终止第一子进程*/
if(pid=fork())
exit(0);
/*第二子进程*/
daemon_proc = 1;
/*将工作目录设定位“/”*/
chdir("/");
/*清除文件掩码*/
umask(0);
for(i = 0; iMAXFD; i++){
close(i);
}
/*打开log*/
openlog(pname, LOG_PID, facility);
}