• 企业400电话
  • 微网小程序
  • AI电话机器人
  • 电商代运营
  • 全 部 栏 目

    企业400电话 网络优化推广 AI电话机器人 呼叫中心 网站建设 商标✡知产 微网小程序 电商运营 彩铃•短信 增值拓展业务
    linux 守护进程详解及建立守护进程

    linux 守护进程详解及建立守护进程

    守护进程是一种后台运行并且独立于所有终端控制之外的进程。

      守护进程的启动

      要启动一个守护进程,可以采取一下几种方式:

      守护进程的建立

      先来看一个守护进程建立的例子:    

    #include sys/types.h>
    #include signal.h>
    #include unistd.h>
    #include syslog.h>
    
    #define MAXFD 64
    
    void daemon_init(const char* pname, int facility){
      int i;
      pit_t pid;
      
      /*fork(),终止父进程*/
      if(pid=fork()){
        exit(0);
      }
      /*第一子进程*/
      setsid();
      signal(SIGHUP,SIG_IGN);
      /*fork()终止第一子进程*/
      if(pid=fork())
        exit(0);
      /*第二子进程*/
      daemon_proc = 1;
      /*将工作目录设定位“/”*/
      chdir("/");
      /*清除文件掩码*/
      umask(0);
      for(i = 0; iMAXFD; i++){
        close(i);
      }
      /*打开log*/
      openlog(pname, LOG_PID, facility);
    }

      从上面的程序可以看出,建立一个守护进程需要以下操作:

    1. fork。首先需要fork一个子进程并将父进程关闭。如果进程是作为一个shell命令在命令行前台启动的,当父进程终止时,shell就认为该命令已经结束。这样子进程就自动成为了后台进程。而且,子进程从父进程那里继承了组标识符同时又拥有了自己的进程标识符,这样保证了子进程不会是一个进程组的首进程。这一点是下一步setsid所必需的。
    2. setsid。setsid()调用创建了一个新的进程组,调用进程成为该进程组的首进程。这样,就使该进程脱离原来的终端,成为了独立终端外的进程。
    3. 忽略SIGHUP信号,重新fork。这样使进程不再是进程组的首进程,可以防止在某些情况下进程意外的打开终端而重新与终端发生联系。
    4. 改变工作目录,清楚文件掩码。改变工作目录主要是为了切断进程与原有文件系统的联系。并且保证无论从什么地方启动进程都能正常工作。清除文件掩码是为了消除进程自身掩码对其创建文件的影响。
    5. 关闭全部已打开的文件句柄。这是为了防止子进程继承在父进程中打开的文件而使这些文件始终保持打开从而产生某些冲突。
    6. 打开log系统。

    感谢阅读,希望能帮助到大家,谢谢大家对本站的支持!

    您可能感兴趣的文章:
    • .net Core 3.0 WebApi 创建Linux守护进程的方法
    • 详解Linux中的守护进程
    • Java实现Linux下双守护进程
    • Python实现Linux下守护进程的编写方法
    • C++编写LINUX守护进程的实现代码
    上一篇:Linux 下xargs命令详解及xargs与管道的区别
    下一篇:Linux进程控制详解及实例
  • 相关文章
  • 

    © 2016-2020 巨人网络通讯 版权所有

    《增值电信业务经营许可证》 苏ICP备15040257号-8

    linux 守护进程详解及建立守护进程 linux,守护,进程,详解,及,