Linux的守护进程
Linux #守护进程2012-11-16 09:57
守护进程有时也称为精灵进程是生存其较长的一种进程,这些进程没有与控制终端相关联,它们在系统启动的时候启动,在系统关闭的时候关闭。
我们知道,因为守护进程没有控制终端与其相关联,所以不能只是简单地将一些出错信息写到标准输出设备上。
通常使用的方法是调用syslog函数以产生日志消息。
调用该函数的顺序是:
#include<syslog.h>
void openlog(const char *ident,int option,int facility);打开syslog
void syslog(int priority,const char *format,...);写入syslog
void closelog(void);关闭syslog
int setlogmask(int maskpri);用于设置进程的记录优先级屏蔽字。
其参数的含义,大家可以通过man一下函数原型而得到。
下面给出一个具体的例子来说明这些函数的使用:
#include<stdio.h> #include<stdlib.h> #include<sys/types.h> #include<sys/stat.h> #include<signal.h> #include<fcntl.h> #include <syslog.h> #define MAXF 10000 int main() { int i,fd; pid_t pid; /*(1)openlog也可省略 http://yige.org/cpp/ */ openlog("my_log",LOG_PID,LOG_DAEMON); pid=fork();/*<1> 创建子进程,结束父进程*/ if(pid<0) perror("fork error!\n"); else if(pid>0)/*父进程*/ exit(0); setsid();/*<2>创建会话期,进程成为新的会话组长和新的进程组长*/ chdir("/");/*<3>更改当前工作目录*/ umask(0);/*<4>设置文件权限*/ for(i=1;i<MAXF;i++)/*<5>关闭文件描述符*/ close(i); /*每5秒,写入文件一次*/ while(1) { /*(2) syslog写入/var/log/syslog 文件中*/ syslog(LOG_ERR,"%s\n","****----open error----****\n"); sleep(5); } }这时我们运行该程序之后,在/var/log/syslog文件中就可以看到这样的信息:****----open error----****。
相关文章
- Linux中磁盘分区命令 2012/11/16
- Linux下用wine安装QQ 2012/11/16
- Linux中的查看文件系统命令 2012/11/16
- Linux中的搜索文件命令 2012/11/16
- Linux中的CP命令 2012/11/16
- linux对登录和history的清除 2012/11/16
- Linux命令link/unlink/close/fclose详解 2012/11/16
- Linux中对文件删除函数unlink的操作 2012/11/16
- Linux中的硬链接和符号链接 2012/11/16
- Linux中的od指令 2012/11/16