守护进程是一种后台运行彬接独立于所有终端控制之外的进程.
正是因为守护进程独立于所有的终端控制,因此,他无法向通常程序那样将信息直接输出到标准输出和标准错误输出.威力解决这个问题,linux提供了syslog()函数.通过他,守护进程可以向系统的log文件写入信息.他在系统函数库syslog.h中的定义如下:
void syslog(int priority,char *format,...);
在一个进程使用syslog()的时候,应该先用openlog()打开系统纪录.
#include
void openlog(const *ident,int options,int facility);
参数ident是一个字符窜,通常他是程序的名字.
options可以是下面的值.
log_cons 如果不能写入log值.则直接将其发送给主控台.
log_ndelay 直接建立syslogd进程而不是打开log文件
log_perror 将信息写入log同时也发送给标准错误输出.
log_pid 在每个信息中加入pid值.用一个
下面用一个示例来讲解:
#include
#include
#include
#include
#define maxfd 64
main(){
int i;
if(fork())
exit(1); /*父进程退出,使子进程成为后台进程*/
setsid(); /*建立一个新的进程组,在这个新的进程组中,子进程成为这个进程组的首进程.这样,该进程就独立于所有终端之外*/
signal(sighup,sig_ign); /*忽略sighup信号*/
if(fork())
exit(1); /*再次fork(),保证该进程不是进程组的首进程.*/
chdir("/"); /*改变当前目录,使得进程不和任何文件系统关联*/
unmask(0); /*清除文件掩码,消除进程掩码对其所创建文件的影响*/
for(i=0;i close(i); /*关闭所有文件描述符*/
openlog(pname,log_pid,facility); /*打开记录*/
Java Asp PHP .Net XML C/C++ CGI VB Jsp J2ee J2se J2me EJB Servlet Tomcat Resin Struts Weblogic Eclipse ANT GUI JMS Web servise IDEA Webphere Hibernate Spring Jboss Applet Swing Socket Javamail Perl Ajax P2P 安全 模式 框架 测试 开源 游戏
Windows XP Windows 2000 Windows 2003 Windows Me Windows 9.x Linux UNIX 注册表 操作系统 服务器 应用服务器