PDF (US Ltr) - 1.4Mb
PDF (A4) - 1.4Mb
int
mysql_library_init(int argc,
char **argv,
char **groups)
在调用任何其他 MySQL 函数之前,调用此函数来初始化 MySQL 客户端库。
注意
为了避免在应用程序完成使用库后(例如,在关闭与服务器的连接后)发生内存泄漏,请务必显式调用 mysql_library_end()
。这使内存管理能够执行清理并释放库使用的资源。请参阅 第 5.4.44 节,“mysql_library_end()”.
在非多线程环境中,可以省略对 mysql_library_init()
的调用,因为 mysql_init()
会根据需要自动调用它。但是,mysql_library_init()
在多线程环境中不是线程安全的,因此 mysql_init()
也不安全,因为它会调用 mysql_library_init()
。您必须在生成任何线程之前调用 mysql_library_init()
,或者使用互斥量来保护调用,无论您是通过 mysql_library_init()
还是间接通过 mysql_init()
调用。在执行任何其他客户端库调用之前执行此操作。
argc
、argv
和 groups
参数未使用。在旧版本的 MySQL 中,它们用于链接到嵌入式服务器的应用程序,该服务器不再受支持。现在,调用应该写成 mysql_library_init(0, NULL, NULL)
.
#include <mysql.h>
#include <stdlib.h>
int main(void) {
if (mysql_library_init(0, NULL, NULL)) {
fprintf(stderr, "could not initialize MySQL client library\n");
exit(1);
}
/* Use any MySQL API functions here */
mysql_library_end();
return EXIT_SUCCESS;
}