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一下函数原型而得到。
下面给出一个具体的例子来说明这些函数的使用:
01 | #include<stdio.h> |
02 | #include<stdlib.h> |
03 | #include<sys/types.h> |
04 | #include<sys/stat.h> |
05 | #include<signal.h> |
06 | #include<fcntl.h> |
07 | #include <syslog.h> |
08 | |
09 | #define MAXF 10000 |
10 | int main() |
11 | { |
12 | int i,fd; |
13 | pid_t pid; |
14 | |
15 | /*(1)openlog也可省略 http://yige.org/cpp/ */ |
16 | openlog( "my_log" ,LOG_PID,LOG_DAEMON); |
17 | |
18 | pid=fork(); /*<1> 创建子进程,结束父进程*/ |
19 | if (pid<0) |
20 | perror ( "fork error!\n" ); |
21 | else if (pid>0) /*父进程*/ |
22 | exit (0); |
23 | |
24 | |
25 | setsid(); /*<2>创建会话期,进程成为新的会话组长和新的进程组长*/ |
26 | chdir( "/" ); /*<3>更改当前工作目录*/ |
27 | umask(0); /*<4>设置文件权限*/ |
28 | for (i=1;i<MAXF;i++) /*<5>关闭文件描述符*/ |
29 | close(i); |
30 | |
31 | /*每5秒,写入文件一次*/ |
32 | |
33 | while (1) |
34 | { |
35 | /*(2) syslog写入/var/log/syslog 文件中*/ |
36 | syslog(LOG_ERR, "%s\n" , "****----open error----****\n" ); |
37 | sleep(5); |
38 | } |
39 | |
40 | } |
相关文章
- 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