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);

    }

  • 相关阅读:
    基础篇
    模块,包
    初识面向对象
    linux在线安装jdk
    热点链接(img map area)
    oracle temp 临时表
    ajax基础代码
    Java编译执行带包名java文件
    oracle spool 用法小结
    Hadoop NameNode safemode
  • 原文地址:https://www.cnblogs.com/codec/p/3739119.html
Copyright © 2011-2022 走看看