daemon守护进程
守护进程是一个后台进程,不能够控制终端,所以任何输出,无论是向标准出错设备stderr还是向标准输出设备stdout的输出都需做特别处理。守护进程一般在系统启动时启动,它的父进程是init进程。
创建守护进程
1在父进程执行fork然后让父进程退出。
2在子进程中使用setsid调用创建新的会话。
3让根目录成为子进程的当前工作目录。
4设置进程的umask为0。
5关闭子进程继承的任何不必要的文件描述符。
系统日志
#include <syslog.h>
void openlog(char *ident, int option, int facility);
void closelog(void);
void syslog(int priority, char *format,...);
守护进程是一个后台进程,不能够控制终端,所以任何输出,无论是向标准出错设备stderr还是向标准输出设备stdout的输出都需做特别处理。守护进程一般在系统启动时启动,它的父进程是init进程。
创建守护进程
1在父进程执行fork然后让父进程退出。
2在子进程中使用setsid调用创建新的会话。
3让根目录成为子进程的当前工作目录。
4设置进程的umask为0。
5关闭子进程继承的任何不必要的文件描述符。
系统日志
#include <syslog.h>
void openlog(char *ident, int option, int facility);
void closelog(void);
void syslog(int priority, char *format,...);
两种基本的模式:
stand_alone 该daemon启动之后,就直接常驻在内存,一直占用系统资源,但最大的优点就是,当有请求到来时,会很快速的响应。
super daemon 由统一的daemon服务inet负责唤起服务,后来的linux使用xinet。
/etc/services文件里为网络服务指定了端口。
daemon程序的命名规则,一般以d结尾。xxxxd