一、memcache的守護進程啓動方式(2017-8-10)

想開始研究下memcache的源碼,不知從哪下手,就從守護進程啓動開始吧,主要是比較簡單spa

 

/**
 * 守護進程啓動
 * @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);
}
相關文章
相關標籤/搜索