守护进程和inetd超级服务器
void syslog(int priority,const char * message,...);
syslog(LOG_INFO|LOG_LOCAL2,"rename(%s,%s):%m",file1,file2);
#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); }
郑重声明:本站内容如果来自互联网及其他传播媒体,其版权均属原媒体及文章作者所有。转载目的在于传递更多信息及用于网络分享,并不代表本站赞同其观点和对其真实性负责,也不构成任何其他建议。