zoukankan      html  css  js  c++  java
  • 《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);
        }
    }
  • 相关阅读:
    mapbox-gl开发:deck.gl轨迹图效果
    vscode双击选中单词,设置短横线不分隔
    CSS自定义滚动条样式,兼容IE浏览器
    flv 视频播放器
    mapbox、echarts实现地图流动效果
    echarts 小时图
    deckgl-triplayer流动效果
    vue使用flv视频监控组件
    qt学习中遇到的问题及处理方法
    GitHub入门
  • 原文地址:https://www.cnblogs.com/zhuangquan/p/14385154.html
Copyright © 2011-2022 走看看