zoukankan      html  css  js  c++  java
  • 守护进程

    守护进程

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

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

    创建守护进程模型

    1. 创建子进程,父进程退出  fork()

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

        2.在子进程中创建新会话    setsid()

         setsid()函数

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

        3.改变当前目录为根目录   chdir()

         chdir()函数

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

         也可以换成其它路径

        4.重设文件权限掩码    umask()

         umask()函数

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

         增加守护进程灵活性

        5.关闭文件描述符    将0/1/2重定向 /dev/null    dup2()

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

        6.开始执行守护进程核心工作

        7.守护进程退出处理程序模型

    #include <stdio.h>
    
    int main(void)
    {
        pid_t pid, sid;
        int ret, fd;
        pid = fork();
        if(pid > 0)   
        {
            return 0;
        }
        sid = setsid();
        ret = chdir("目录");
        if(ret < 0)
        {
            perror("chdir error");
            exit(0);
        }
        umask(0002);
    
        close(STDIN_FILENO);
        fd = open("/dev/null", O_RDWR);
        dup2(0, STDOUT_FILENO);
        dup2(0, STDERR_FILENO);
        return 0;
    }
  • 相关阅读:
    badblocks 检查硬盘是否有坏道
    IE兼容性开发的笔记
    Linux下设置ip和主机名进行绑定
    netty httpserver
    netty websocket协议开发
    OAuth2.0和SSO授权的区别
    window.location.href跳转问题2
    修改密码,验证两次输入是否相同,相同才能提交
    (2)集合 遍历set集合
    (1)集合 ---遍历map集合
  • 原文地址:https://www.cnblogs.com/lr1402585172/p/10571192.html
Copyright © 2011-2022 走看看