|
发表于 2004-12-13 17:22:08
|
显示全部楼层
回复: 在c程序中启动mysql服务器后,立即连接错误
最初由 iamwst 发表
在c程序中启动mysql服务器后,立即连接mysql服务器时报错:'Can't connect to local MySQL server through socket '/var/lib/mysql/mysql.sock' (2)'。我查看/var/lib/mysql目录下没有mysql.sock文件。重新在命令行下启动mysql服务器,仍然没有mysql.sock这个文件。用kill杀死mysqld进程后,命令行下启动mysql服务器,在/var/lib/mysql目录下有了mysql.sock文件,mysql服务器可以连接。我怀疑在c程序中启动mysql服务器的代码(system("/etc/init.d/mysqd start");)执行后,服务器还没有完全启动,这时候连接就会有问题,并且导致mysql服务器进程出错,所以以后也无法重新启动mysql服务器,只有在用kill杀死mysqld进程后才可以重新启动。我在system("/etc/init.d/mysqd start");后加了一句sleep(5);后就可以了。
请教高手,有没有别的办法解决这个问题?
对system函数判断其返回状态,system函数有三种返回状态(UNIX高级环境编程),详细见P168
启动成功之后再进行服务器连接,在分时系统中,程序执行的时间的不确定性即便是加了sleep之后也不能代表什么,最好的办法是检测返回值 |
|