各位高手,请进来看看(daemon问题)
我将我的服务器端程序改为daemon方式,在我的程序中要与数据库(mysql)相连,但在我设为daemon以后,就连接不上数据库了?whY?我应该这样才能达到我的目的。分就这么多 了,各位帮帮忙?谢谢了,先! 问题点数:20、回复次数:3Top
1 楼lurenfu(具有中国特色的社会主义初级阶段,一百年不变)回复于 2001-11-15 11:04:26 得分 20
你最好在处理完命令行参数后马上daemon,daemon一般会fork两次,关闭所有打开的文件描述符。你连接mysql时,要打开socket,这也属于文件描符,可能被关闭了。所以建议你在daemon以后再连接mysql数据库。在linux里,GLIBC库中有一个库函数:int daemon( int nochdir, int noclose );可以将你的程序变成daemon。其中参数nochdir如果为0的话,将改变程序工作路径到"/",如果noclose为0的话,将关闭所有终端,也就是你将不能输出信息到控制台。如果不为0的话,则相反。Top
2 楼lurenfu(具有中国特色的社会主义初级阶段,一百年不变)回复于 2001-11-15 11:08:23 得分 0
我写daemon的一般流程:
int main( int argc, char **argv )
{
ArgInit( argc, argv );//处理命令行参数,可用getopt_long()
ConfInit();//如果有配置文件,处理配置文件中的选项
AppInit();//APP初始化工作,在这个函数里执行daemon()函数,至于是在开头还是结尾执行,视具体情况而定
AppRun();//这里就不说了
return 0;
}Top
3 楼superdreamer(只懂一点点!)回复于 2001-11-15 11:14:24 得分 0
非常感谢,我搞定啦!我把连接mysql时的哪个 sock文件描述符给关闭了,再次感谢,结帐!Top




