当前位置: 技术问答>linux和unix
在编写mysql连接时遇到这个奇怪的connect问题,麻烦大家帮我看 :)
来源: 互联网 发布时间:2015-11-21
本文导语: 我在编简单的mysql数据库连接的函数实现,代码如下: /*trysql.c*/ #include #include int connect(); int main() { connect(); return 0; } int connect() { MYSQL mysql; // need a instance to init mysql_init(&mysql); printf("init fini...
我在编简单的mysql数据库连接的函数实现,代码如下:
/*trysql.c*/
#include
#include
int connect();
int main()
{
connect();
return 0;
}
int connect()
{
MYSQL mysql; // need a instance to init
mysql_init(&mysql);
printf("init finished!n");
if (!mysql_real_connect(&mysql,"localhost", "root", NULL, "grid",0,NULL,0))
{
printf( "Error connecting to database: %sn",mysql_error(&mysql));
}
else printf("Connected...n");
mysql_close(&mysql);
return 0;
}
编译命令:gcc trysql.c -I /usr/include/mysql -L /usr/lib/mysql -lmysqlclient
结果很奇怪,是无数行的init finished!和Error connecting to database:,
而当把函数名改为其他名子如test之类就没有问题正常显示无法连接数据库(数据库并没有开,只是试一下),
难道connect在linux编程中有什么特殊含义吗.
麻烦大家帮我看看,多谢!
/*trysql.c*/
#include
#include
int connect();
int main()
{
connect();
return 0;
}
int connect()
{
MYSQL mysql; // need a instance to init
mysql_init(&mysql);
printf("init finished!n");
if (!mysql_real_connect(&mysql,"localhost", "root", NULL, "grid",0,NULL,0))
{
printf( "Error connecting to database: %sn",mysql_error(&mysql));
}
else printf("Connected...n");
mysql_close(&mysql);
return 0;
}
编译命令:gcc trysql.c -I /usr/include/mysql -L /usr/lib/mysql -lmysqlclient
结果很奇怪,是无数行的init finished!和Error connecting to database:,
而当把函数名改为其他名子如test之类就没有问题正常显示无法连接数据库(数据库并没有开,只是试一下),
难道connect在linux编程中有什么特殊含义吗.
麻烦大家帮我看看,多谢!
|
写简单了:)
接口是指API接口的实现,包括socket、accept、listen、connect、bind等等,linux上这些API函数都在libc里,所以任何定义了同名函数的C程序都会导致冲突,就象你的connect函数。
在solaris系统上,socket API接口函数是在一个独立的库libsocket里,所以如果你不使用socket接口,不连接libsocket,你的应用里就可以有自己connect函数定义,当然可移植性就不好了。
接口是指API接口的实现,包括socket、accept、listen、connect、bind等等,linux上这些API函数都在libc里,所以任何定义了同名函数的C程序都会导致冲突,就象你的connect函数。
在solaris系统上,socket API接口函数是在一个独立的库libsocket里,所以如果你不使用socket接口,不连接libsocket,你的应用里就可以有自己connect函数定义,当然可移植性就不好了。
|
connect是socket里面的连接函数。
|
是的
socket里面有
socket里面有
|
Linux的socket接口在libc里,所以会出错。有些系统socket接口是独立的库,所以没有问题。