守护进程:周期性的执行某项任务或等待某个事件发生的进程,运行不依赖shell终端,生长周期较长,(从开机开始到关机结束)
守护进程的创建:
1.创建子进程,让父进程退出
fork();
2.创建新的会话期
进程组:一个或多个进程组成,有一个组长进程,进程组的ID就是进程组长的PID
会话组(期):一个或多个进程组组成
脱离当前的shell终端,创建新的会话期
创建会话期:setsid();
#include<unistd.h>
pid_t setsid(void);
//作用:当前子进程脱离会话期,脱离shell
后三步是为了优化
3.改变子进程的工作目录为根目录,因为根目录永远不会被删除
chdir("/");
4.取消文件权限掩码
umask(0);--->umask的默认值是000 000 010,把文件的某一个权限改变,与文件权限&
取消复制父进程的子进程的文件掩码
#include<sys/types.h>
#include<sys>
文件权限:
5.关闭所有文件描述符
一个进程最多打开1024个文件,1021+3个默认文件
先找出进程调用最大的文件
getdtablesize
opendir readdir chdir