LinuxSir.cn,穿越时空的Linuxsir!

 找回密码
 注册
搜索
热搜: shell linux mysql
查看: 1023|回复: 11

如何调试一个daemon进程?

[复制链接]
发表于 2005-1-1 10:02:15 | 显示全部楼层 |阅读模式
我的程序本来能正常运行,一把他变成daemon进程就出问题。
也就是程序开始调用了这个:
int
daemon_init(void)
{
        pid_t pid;

        if((pid=fork())<0)
                return(-1);
        else if(pid!=0)
                exit(0);
       
        setsid();                /* become session leader */
        chdir("/");                /* change working directory */
        umask(0);                /* clear file mode creation mask */
       
        return(0);
}
可能问题出在哪?我应当怎样进行调试呢?
发表于 2005-1-1 10:06:34 | 显示全部楼层
你还是先看看《UNIX环境高级编程》吧。或者在网上找找有关的贴子。
我觉得你的程序没有写对。
 楼主| 发表于 2005-1-1 10:19:42 | 显示全部楼层
那一般有可能是什么地方出问题呢?
发表于 2005-1-1 11:10:41 | 显示全部楼层
网上有很多详细介绍daemon进程的概念和代码的贴子,你先去搜索一些看看。我没有必要重复别人已经做得很好的事。
发表于 2005-1-1 20:13:58 | 显示全部楼层
gdb断电调试一下
发表于 2005-1-1 21:00:55 | 显示全部楼层
Post by suowei1979
gdb断电调试一下

我看他还没有到这一步吧。程序结构整个是错的,怎么调试也不可能达到目的。
发表于 2005-1-1 21:23:28 | 显示全部楼层
先看看别人对守护进程的理解:
http://www.loveunix.net/bbs/index.php?showtopic=41522
发表于 2005-1-11 16:45:36 | 显示全部楼层
也没自己写过。。。忘了
发表于 2005-1-12 08:43:13 | 显示全部楼层

对fork没有正确的理解。

去掉else就可以了。
发表于 2005-1-12 14:47:52 | 显示全部楼层
Post by iamone
去掉else就可以了。

这个else留在那里能有什么影响?
您需要登录后才可以回帖 登录 | 注册

本版积分规则

快速回复 返回顶部 返回列表