文档首页
MySQL 9.0 C API 开发人员指南
下载本手册
PDF (US Ltr) - 1.4Mb
PDF (A4) - 1.4Mb


5.4.45 mysql_library_init()

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() 间接调用。在任何其他客户端库调用之前执行此操作。

argcargvgroups 参数未使用。在旧版本的 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;
}

返回值

成功返回零。如果发生错误,则返回非零值。