免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 1772 | 回复: 1
打印 上一主题 下一主题

帮我解析下代码吧!谢谢 [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 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环境编程这本书大家一直是怎么看的,我做的项目代码很多都是用公司已经遍好的库,自己写的很少,那本书上的东西我怎么实践比较好呢>?
现在那本书上还有好多东西看的比较迷糊,我觉得要不断的看下去,反复的看

论坛徽章:
0
2 [报告]
发表于 2007-08-03 16:30 |只看该作者
将进程变成Daemon进程, 具体在APUE2第13章有详细的讲解. 你看看吧.
  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP