1.什么是守护进程?
守护进程运行在后台,不跟任何控制终端关联。
2.怎么创建一个守护进程?
有俩个基本要求: 1.必须作为我们init进程的子进程 2.不跟控制终端交互。
1.使用fork函数创建一个新的进程,然后让父进程使用exit函数直接退出(必须要的)
2.调用setsid函数。(必须要的)
3.调用chdir函数,将当前的工作目录改成根目录,增强程序的健壮性。(不是必须要的)
4.重设我们umask文件掩码,增强程序的健壮性和灵活性(不是必须要的)
5.关闭文件描述符,节省资源(不是必须要的)
6.执行我们需要执行的代码(必须要的)
3.守护进程简单例程
#include <stdio.h>
#include <unistd.h>
#include <sys/types.h>
#include <sys/stat.h>
#include <stdlib.h>
int main(void)
{
pid_t pid;
pid = fork();
//父进程直接退出
if(pid > 0 ){
exit(0);
}
//子进程中创建守护进程
if(pid == 0){
setsid();
chdir("/");
umask(0);
close(0);
close(1);
close(2);
//守护进程的程序,此处用while(1)作为临时程序
while(1){
}
}
return 0;
}