1、memcache的守护进程启动方式(2017-8-10)

想开始研究下memcache的源码,不知从哪下手,就从守护进程启动开始吧,主要是比较简单

/**
 * 守护进程启动
 * @param nochdir   是否切换到根目录
 * @param noclose   是否关闭标准IO
 * @return 
 */
int deamonize(int nochdir, int noclose) {
    int fd;
    switch (fork()) {   //unistd.h
            //fork出错
        case -1:
            return (-1);
            //子进程
        case 0:
            break;
            //父进程
        default:
            _exit(EXIT_SUCCESS);
    }
    if (setsid() == -1) {
        return (-1);
    }
    if (nochdir == 0) {
        if (chdir("/") != 0) {
            perror("chdir");
            return (-1);
        }
    }
    if (noclose == 0 && (fd = open("/dev/null", O_RDWR, 0)) != -1) {
        if (dup2(fd, STDIN_FILENO) < 0) {
            perror("dup2 stdin");
            return (-1);
        }
        if (dup2(fd, STDOUT_FILENO) < 0) {
            perror("dup2 stdout");
            return (-1);
        }
        if (dup2(fd, STDERR_FILENO) < 0) {
            perror("dup2 stderr");
            return (-1);
        }
    }
    return (0);
}
原文地址:https://www.cnblogs.com/bai-jimmy/p/7401829.html