1、守护进程的特点
1.1、独立于控制终端。
1.2、父进程是1号进程(init),所以守护进程也是孤儿进程
1.3、守护进程是独自成组进程的。
1.4、守护进程独自成一个成为会话的会话首进程,或者是一个会话中的某个进程组。
1.5、守护进程的运行不受用户登录和注销的影响。
2、为什么要有守护进程???
控制终端因为某些原因会发送一些信号,接受到信号的进程去执行这些信号的默认处理动作会导致进程退出。这就使得进程不能正常的处理某些任务,所以就需要像守护进程这样接受不到信号的进程。让进程独立与控制终端,执行某些任务或处理某些事件。
3、创建一个简单的守护进程
步骤:
1、调用umask将权限掩码设置为0
2、调用fork,父进程退出,保证子进程不会使一个进程组的组长。
3、调用setsid创建一个新的会话。(还可以再fork一次)
4、将当前创建目录改为根目录
5、关闭不需要的文件描述符。(守护进程独立于控制终端)
6、忽略SIGCHLD信号。
//fork一次
#include<stdio.h>
#include<stdlib.h>
#include<unistd.h>
#include<sys/types.h>
#include<sys/stat.h>
#i