守护进程通常也称为daemon进程,它是Linux的后台服务进程,一般具有以下几个特点:
1)它是一个生存周期较长的进程,通常独立于控制终端并且周期性额执行某个任务或等待某些发生事件。
2)守护进程通常在系统启动的时候就开始运行,在系统关闭时才终止。
3)守护进程大多数都是服务进程,在后台运行。
编写守护进程
1:创建一个进程,父进程退出,此时子进程就成为了守护进程
2:脱离终端,在子进程中创建新的会话,
3:clean up 清理数据,创建根目录,修改权限,关闭文件描述符
一般形式如下:
#include
#include
#include
#include
#include
#include
#inlcude
#include
int mian () { pid_t pid ; int i ,fd; char *buf = "this is a daemon \n"; pid =fork(); //创建进程 if (pid < 0){ perror("fork"); return -1; }else if (pid >0 ){ exit(0); //父进程退出 } setsid(); //创建新会话,脱离控制终端 chdir("/tmp"); //创建新目录 umask(0); //修改目录权限 for(i = 0;i
在创建守护进程是提到了会话的概念,那么什么是会话?
对于pts/2的进程sid号是由控制终端控制的,他的组ID和PID与它不同,
当创建了守护进程就像pts/0进程一样,他的SID和GPID和PID都是自己重新获取的,已经脱离了终端的控制。