zoukankan      html  css  js  c++  java
  • 一个守护进程实例

    void DaemonInit(void)
    {

    //LOG::INF("[ServerMeeting] 服务初始化. ");
    int pid;

    //如果是父进程,结束父进程,子进程继续
    if(pid=fork())
    {
      exit(0);
    }
    /*else if(pid<0) // 不可能进入
    {
      exit(1); //fork失败,退出
    }*/

    //是第一子进程,后台继续执行
    setsid();//第一子进程成为新的会话组长和进程组长

    //并与控制终端分离
    if(pid=fork())
    {
      exit(0);//是第一子进程,结束第一子进程
    }
    /*else if(pid<0)
    {
      exit(1);//fork失败,退出
    }*/

    //关闭打开的文件描述符,保留标准输入(0),标准输出(1)和标准错误输出(2)
    //还可以将这3文件通过dup2重定向:error=open("/tmp/error",O_WRONLY|O_CREAT, 0600); dup2(error,2); close(error); //in=open("/tmp/in",O_RDONLY|O_CREAT,0600); if(dup2(in,0)==-1) perror("in"); close(in); //out=open("/tmp/out",O_WRONLY|O_CREAT,0600);if(dup2(out,1)==-1) perror("out"); close(out);
    for(int fd=3,fdtablesize=getdtablesize();fd <fdtablesize;fd++)
    {

    close(fd);

    }

    //重设文件创建掩模
    umask(0);

    //信号处理
    signal(SIGTTOU,SIG_IGN);
    signal(SIGTTIN,SIG_IGN);
    signal(SIGTSTP,SIG_IGN);
    signal(SIGHUP ,SIG_IGN);
    signal(SIGTERM,SIG_IGN);

    //设置系统参数
    struct rlimit l = {0,0};
    l.rlim_cur=65535;
    l.rlim_max=65535;
    setrlimit(RLIMIT_NOFILE,&l);

    }

  • 相关阅读:
    【JS】DOM
    【JS】事件处理
    【JS】引用类型之Global
    【JS】引用类型之RegExp
    【JS】引用类型之Function
    树形图(菜单)构建组建dhtmlXTree
    【JS】引用类型之String
    【JS】引用类型之Math
    【JS】鼠标事件
    【JS】UI事件
  • 原文地址:https://www.cnblogs.com/codec/p/3739119.html
Copyright © 2011-2022 走看看