23.8.7.40 mysql_library_init()
int mysql_library_init(int argc, char **argv, char
**groups)
설명
응용 프로그램이 정상적인 클라이언트 프로그램인지, 임베디드 서버를 사용하는지에 관계없이이 함수는 다른 모든 MySQL 함수를 호출하기 전에 MySQL 라이브러리를 초기화하기 위해 호출합니다. 응용 프로그램에서 내장 서버를 사용하는 경우이 호출을 통해 서버를 시작하고 해당 서버가 사용하는 모든 서브 시스템 ( mysys
, InnoDB
등)을 초기화합니다.
응용 프로그램이 MySQL 라이브러리의 사용을 마쳤 으면 mysql_library_end()
를 호출하여 정리합니다. 섹션 23.8.7.39 "mysql_library_end ()" 를 참조하십시오.
응용 프로그램이 보통 클라이언트로 작동하거나 내장 서버를 사용할지 여부의 선택은 링크시 최종 실행 파일을 생성하기 위해 libmysqlclient
라이브러리를 사용하거나 libmysqld
라이브러리를 사용하는지에 따라 다릅니다. 자세한 내용은 섹션 23.8.6 "C API 함수 개요" 를 참조하십시오.
비 멀티 스레드 환경에서 mysql_init()
가 필요에 따라 자동으로 mysql_library_init()
를 호출이 호출을 생략 할 수 있습니다. 그러나 mysql_library_init()
는 다중 스레드 환경에서 스레드로부터 안전하지 않으므로 mysql_library_init()
를 호출 mysql_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.6 "옵션 파일 사용" 을 참조하십시오. 배열의 마지막 항목을 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; }
반환 값
성공의 경우는 제로. 오류가 발생한 경우 0이 아닌.