#include "unp.h"
#include <syslog.h>
#define MAXFD 64
extern int daemon_proc;
void daemon_init(const char * pname,int facility){
int i;
pid_t pid;
if((pid = Fork())!=0) //调用fork,终止父进程,留下子进程继续运行。
exit(0);
setid(); //创建一个新的登陆会话session
Signal(SIGHUP,SIG_IGN); //忽略SGIHUP信号并在此调用fork
if((pid=Fork())!=0) //确保将来即使打开一个终端设备,也不会自动获得控制终端。
exit(0);
daemon_proc = 1; //非零时,出错处理函数将调用syslog函数取代fprintf输出到标准错误输出
chdir("/");
umask(0);//将工作目录改到根目录
for(i=0;i<MAXFD;i++) //关闭守护进程从运行开始打开的所有文件描述字
close(i);
openlog(pname,LOG_PID,facility);
}
daemon_init函数:使一个进程编程守护进程
最新推荐文章于 2023-07-13 10:08:50 发布