作为三大进程之一,重要性自然不必多说,那么什么是守护进程,又如何创建呢??
1.守护进程特点
始终后台运行,独立于任何终端,周期性的执行某种任务或等待处理特定事件。
一般的进程关闭会话后,所有进程就会结束。
2.守护进程的创建过程
1>先与终端脱离关系,让子进程变为孤儿进程。
2>子进程创建一个新的会话,并成为新的会话组长。
3>守护进程一直在后天运行,其工作目录不能被卸载,重新设定当前目录(假如是临时目录,容易出现问题,所以更改目录,路径不限定)
4>改变文件掩码,防止设置权限时受影响
5>关闭所有从父进程继承的打开文件
最后查看编写的程序是否为后台程序,关闭终端后是否会影响进程。
只能用kill杀死进程。
创建一个守护进程,将系统时间保存到log文件中。
#include <unistd.h> #include <stdio.h> #include <stdlib.h> #include <time.h> int main(){ pid_t pid; pid = fork(); if(pid<0){ perror("fork"); return -1; }else if(pid>0){ exit(0); } pid = setsid(); if(pid==-1){ perror("setsid"); return -1; } chdir("/"); umask(0); int i; for(i = 0;i<2;i++){ close(i); } FILE *fp; time_t ctm; fp = fopen("1.log","w"); while(1){ ctm = time(NULL); //等价于time(&ctm) fputs(ctime(&ctm),fp); fflush(fp); sleep(1); } }