目录
一、概念
守护进程,也就是通常所说的Daemon进程,是Linux中的后台服务进程。
它是一个生存期较长的进程
它独立于控制终端并且周期性的执行某种任务或等待处理某些发生的事件
守护进程常常在系统引导装入时启动,在系统关闭时终止
Linux系统有很多守护进程,大多数服务都是用守护进程实现的
二、守护进程创建的原理
守护进程是通过普通进程经过改变变成守护进程。
如何把一个进程变成守护进程?
在Linux中,每一个系统与用户进行交流的界面称为终端
每一个从此终端开始运行的进程都会依附于这个终端,这个终端就称为这些进程的控制终端
当控制终端被关闭时,相应的进程都会被自动关闭。
三、守护进程创建步骤
// 1, 创建子进程
if((pid = fork()) < 0){
perror("fork");
exit(1);
}else if(pid)
exit(0);
// 2, 创建会话
if(setsid() < 0){
perror("setsid");
exit(1);
}
// 3, 再创建子进程
if((pid = fork()) < 0){
perror("fork");
exit(1);
}else if(pid)
exit(0);
// 4, 关闭继承父进程的文件描述符
int i,max_fd = sysconf(_SC_OPEN_MAX);
for (i = 0; i < max_fd;i++)
close(i);
// 5, 重定向标准输入,标准输入,标准错误
open("/dev/null",O_RDWR);
dup(0);
dup(0);
// 6, 设置守护进程的工作目录
chdir("/");
// 7, 消除umask影响
umask(0);