《Linux守护进程》

  作为三大进程之一,重要性自然不必多说,那么什么是守护进程,又如何创建呢??

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);
    }
}
原文地址:https://www.cnblogs.com/zhuangquan/p/14385154.html