Chinaunix

标题: 帮我解析下代码吧!谢谢 [打印本页]

作者: xiaozhu2007    时间: 2007-08-03 15:56
标题: 帮我解析下代码吧!谢谢
static void process_detach(const char *pname, int mode)
{
        char            lock_path[PATH_MAX];
        int             start;
        int             i;
        pid_t           pid;
        int             fd;

        if(1 != mode){
                if( (0 > (pid = fork()))){
                        err_sys("将进程转化为守护进程时出现错误");
                } else {
                        printf("系统转化为守护进程在后台运行。\n");
                        exit(0);
                }

                dpl_signal(SIGHUP,SIG_IGN);

                if((0 < (pid = fork()))){
                        exit(0);
                }

                setsid();

                chdir((const char *)g_home_path);

                umask(0);
                if(0 == mode){
                        start = 0;
                } else {
                        start = 3;
                }

                for(i = start; i < getdtablesize(); i++){
                        (void)close(i);
                }

                if(0 == mode){
                        if( (fd = open("/dev/null",O_RDWR)) < 0){
                                err_sys("不能打开NULL设备文件.系统终止(%d)!",errno);
                        }
                        (void)dup(fd);
                        (void)dup(fd);
                }
                sleep(3);
        }

        return;
}

能告诉我这段代码的主要功能是什么吗?
还有,unix环境编程这本书大家一直是怎么看的,我做的项目代码很多都是用公司已经遍好的库,自己写的很少,那本书上的东西我怎么实践比较好呢>?
现在那本书上还有好多东西看的比较迷糊,我觉得要不断的看下去,反复的看
作者: scutan    时间: 2007-08-03 16:30
将进程变成Daemon进程, 具体在APUE2第13章有详细的讲解. 你看看吧.




欢迎光临 Chinaunix (http://bbs.chinaunix.net/) Powered by Discuz! X3.2