Spec-Zone .ru
спецификации, руководства, описания, API
|
int mysql_library_init(int argc, char **argv, char **groups)
Вызовите эту функцию, чтобы инициализировать библиотеку MySQL прежде, чем Вы вызовете любую другую функцию
MySQL, является ли Ваше приложение регулярной клиентской программой или использует встроенный сервер. Если
приложение использует встроенный сервер, этот вызов запускает сервер и инициализирует любые подсистемы (mysys
, InnoDB
, и т.д), который использует сервер.
После того, как Ваше приложение делается, пользуясь библиотекой MySQL, вызвать mysql_library_end()
очистить. См. Раздел
22.8.7.39,"mysql_library_end()
".
Выбор того, работает ли приложение как регулярный клиент или использует встроенный сервер, зависит от того,
используете ли Вы libmysqlclient
или libmysqld
библиотека во время ссылки, чтобы произвести заключительную исполнимую программу. Для дополнительной информации
см. Раздел
22.8.6, "Краткий обзор API-функции C".
В немногопоточной среде, звонке mysql_library_init()
может быть опущен, потому что mysql_init()
вызовет это автоматически по мере необходимости. Однако, mysql_library_init()
не ориентировано на многопотоковое исполнение в
многопоточной среде, и таким образом ни один не mysql_init()
,
который вызывает mysql_library_init()
. Следует или вызвать mysql_library_init()
до порождения любых потоков, или иначе использования
взаимное исключение, чтобы защитить вызов, вызываете ли Вы mysql_library_init()
или косвенно через mysql_init()
. Сделайте это до любого другого клиентского вызова библиотеки.
argc
и argv
параметры походят на параметры main()
, и позвольте передать опций к встроенному серверу. Для удобства, argc
может быть 0
(нуль), если нет никаких параметров
командной строки для сервера. Это - обычный случай для приложений, предназначенных для использования только в
качестве регулярных (невстроенных) клиентов, и вызов обычно пишется как 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 library\n"); exit(1); } /* Use any MySQL API functions here */ mysql_library_end(); return EXIT_SUCCESS;}
Когда параметры нужно передать (argc
больше чем 0
),
первый элемент argv
игнорируется (это обычно содержит название программы). mysql_library_init()
делает
копию параметров, таким образом, безопасно уничтожить argv
или groups
после вызова.
Для встраиваемых приложений, если Вы хотите соединиться с внешним сервером, не запуская встроенный сервер,
необходимо определить отрицательную величину для argc
.
groups
параметром является массив строк, которые указывают на группы в файлах опции,
из которых можно считать опции. См. Раздел 4.2.3.3, "Используя Файлы
Опции". Сделайте заключительную запись в массиве NULL
. Для удобства,
если groups
сам параметр NULL
, [server]
и [embedded]
группы используются по умолчанию.
#include <mysql.h>#include <stdlib.h>static char *server_args[] = { "this_program", /* this string is not used */ "--datadir=.", "--key_buffer_size=32M"};static char *server_groups[] = { "embedded", "server", "this_program_SERVER", (char *)NULL};int main(void) { if (mysql_library_init(sizeof(server_args) / sizeof(char *), server_args, server_groups)) { fprintf(stderr, "could not initialize MySQL library\n"); exit(1); } /* Use any MySQL API functions here */ mysql_library_end(); return EXIT_SUCCESS;}
Нуль в случае успеха. Ненулевой, если ошибка произошла.