加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 编程开发 > Java > 正文

守护进程

发布时间:2020-12-15 08:23:44 所属栏目:Java 来源:网络整理
导读:守护进程 Daemon(精灵)进程,是Linux中的后台服务进程,通常独立于控制终端并且周期性地执行某种任务或等待处理某些发生的事件。一般采用以d结尾的名字。 Linux后台的一些系统服务进程,没有控制终端,不能直接和用户交互。不受用户登录、注销的影响,一直在

守护进程

Daemon(精灵)进程,是Linux中的后台服务进程,通常独立于控制终端并且周期性地执行某种任务或等待处理某些发生的事件。一般采用以d结尾的名字。

Linux后台的一些系统服务进程,没有控制终端,不能直接和用户交互。不受用户登录、注销的影响,一直在运行着,他们都是守护进程。如:预读入缓输出机制的实现;ftp服务器;nfs服务器等。

??? 创建守护进程,最关键的一步是调用setsid函数创建一个新的Session,并成为Session Leader。

创建守护进程模型

  1. 创建子进程,父进程退出

所有工作在子进程中进行形式上脱离了控制终端

  1. 在子进程中创建新会话

  ?????? setsid()函数

  ?????? 使子进程完全独立出来,脱离控制

  1. 改变当前目录为根目录

  ?????? chdir()函数

  ?????? 防止占用可卸载的文件系统

  ?????? 也可以换成其它路径

  1. 重设文件权限掩码

  ?????? umask()函数

  ?????? 防止继承的文件创建屏蔽字拒绝某些权限

  ?????? 增加守护进程灵活性

  1. 关闭文件描述符

  ?????? 继承的打开文件不会用到,浪费系统资源,无法卸载

  1. 开始执行守护进程核心工作
  2. 守护进程退出处理程序模型????????????????????????????????????????? ?????????????????????????????????? ?????????????????????????????????????????? ???????????????????????????????????????????????????????????????????????????? ????????????????????????????????????????????????? ????????????????????????????????????????????????????????????????????? ????????????????????????????????????????????????? ??????????????????????????? 【mydaemond.c】
    /***
    mydaemond.c
    ***/
    #include<stdio.h>
    #include<stdlib.h>
    #include<unistd.h>
    #include<fcntl.h>
    #include<sys/stat.h>
    
    void daemonize()
    {
        pid_t pid;
        if((pid == fork()) < 0)
        {
            perror("fork");
            exit(1);
        }
        else if(pid == 0)
        {
            exit(0);
        }
        setsid();
        if(chdir("/") < 0)
        {
            perror("chdir");
            exit(1);
        }
        umask(0);
        close(0);
    
        open("/dev/null",O_RDWR);
        dup2(0,1);
        dup2(0,2);
    }    
    
    int main()
     {
        daemonize();
        while(1);
        return 0;
     }

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读