'U&L Developer˚ε♡з。'에 해당되는 글 233건
- 2011.08.04 [Chap1 #03] - 리눅스 명령어 찾기
- 2011.08.03 [Chap1 #01] - 우분투, 데비안, 그리고 리눅스
- 2011.08.03 UBUNTU LINUX TOOLBOX
- 2011.07.29 비트 제어 - 설정, 클리어, 반전, 검사, 추출
- 2011.07.12 mysql_[real_]query() - SQL 쿼리 실행
- 2011.07.12 MySQL C API - 오류처리 (mysql_errno, mysql_error)
- 2011.07.12 mysql_options() - 연결 옵션을 설정
- 2011.07.11 mysql_real_connect() - MySQL 데이터베이스 연결
▶ 명령어 에러 메시지의 여러 유형
▷ 오타 등 명령어를 잘못 입력 또는 지정된 디렉토리에 존재하지 않는 경우(PATH 변수)
-bash: sillycommand: command not found |
또는 잘못된 명령이지만 비슷한 명령이 존재 하는 경우.
No command 'xxx' found, did you mean: Command 'xdx' from package 'xdx' (universe) Command 'x2x' from package 'x2x' (universe) Command 'xxd' from package 'vim-common' (main) xxx: command not found |
▷ 해당 명령어가 root 계정에만 사용 가능한 경우(sudo 또는 그와 비슷한 방법을 사용)
- 해당 프로그램마다 각종 에러 메시지가 틀림.
▷ 명령어 또는 명령어가 포함된 우분투 패키지가 설치되어 있지 않는 경우.
The Program 'nmap' is currently not installed. You can install it by typing: sudo apt-get install nmap |
▶ 설치된 명령어를 찾기 위한 일반적인 리눅스 명령어들:
명령어와 출력결과의 예 |
설명 |
$ echo $PATH /usr/local/bin:/usr/sbin:/usr/bin:..[생량]… |
현재 path 변수의 내용을 보여줌. |
$ which mount /bin/mount |
PATH에서 첫 번째로 검색된 mount 명령어를 보여줌. |
$ find /usr -name umount /usr/lib/klibc/bin/umount |
/usr 파일 시스템에서 umount 문자열을 가진 파일 또는 디렉토리를 찾는다. |
$ whereis mount mount: /bin/mount /usr/share/man/man8/mount.8.gz |
mount 명령어에 대한 첫 번째 실행 파일과 맨 페이지를 보여준다. |
$ locate mount … /usr/bin/fdmountd |
locate 명령어를 사용하여(설정되어 있는) 디렉토리 목록에서 mount를 검색. |
$ apropos umount … umount(8) - unmount file systems |
맨 페이지 설명에서 입력된 키워드인 umount를 찾는다. |
$ man 8 umount Reformatting umount(8), please wait… |
맨 페이지 섹션 8에 있는 umount 맨 페이지를 본다. (q를 입력해 종료) |
▶설치된 명령어를 찾기 위한 우분투 . 데비안 기반의 명령어들:
명령어와 출력결과의 예 |
설명 |
$ apt-cache search umount … gnome-mount - wrapper for (un)mounting and ejecting… |
패키지 캐시 목록에서 umount에 대한 명령어 또는 설명이 포함된 패키지를 찾는다. |
$ dpkg-query -S umount … initscripts: /etc/init.d/umountnfs.sh |
설치된 패키지에서 파일명에 umount를 포함하고 있는 패키지를 보여준다. |
$ dpkg -L initscripts … /bin/mountpoint |
패키지에 포함된 파일 목록을 보여준다. |
$ sudo apt-get update password: Get:1 http://security.ubuntu.com feisty-security Relase… … |
패키지 캐시 목록을 업데이트 한다. |
'컴퓨터 서적 정리 > Ubuntu Linux Toolbox' 카테고리의 다른 글
[Chap2 #03] - APT 사용하여 Software 관리 (0) | 2011.08.04 |
---|---|
[Chap2 #02] - Debian Software Package 사용 (0) | 2011.08.04 |
[Chap1 #04] - 리눅스 참고 정보(help, man, info) (0) | 2011.08.04 |
[Chap1 #01] - 우분투, 데비안, 그리고 리눅스 (0) | 2011.08.03 |
UBUNTU LINUX TOOLBOX (0) | 2011.08.03 |
♧ 우분투는 데비안 GNU/리눅스(www.debian.org)에 기반한 운영체제. 1990년대 초부터
시작되어 이미 성숙단계에 들어선 데비안은 안정성과 보안성 측면에서 선도적인 리눅스
배포판으로 여겨지고 있다. 자유 소프트웨어의 기준을 엄격하게 준수하며 기여함.
▶ 배포판
우분투를 기반으로 한 Xface 데스크탑 환경의 시스템 |
|
우분투를 기반으로 한 KDE 데스크탑 환경의 시스템. |
|
우분투를 기반으로 한 LXDE 데스크탑 환경의 가벼운 시스템. |
|
교육적 활용에 초점을 둔 우분투 버전. |
|
데비안을 기반으로 한 KDE 데스크탑 지향의 라이브 CD |
|
데비안 기반의 라이브 CD |
|
Knoppix 기반의 작은 라이브 CD(50 MB) |
|
우분투와 데비안에 기반한 데스크탑 라이브 CD |
▶ 우분투와 다른 리눅스 배포판 비교
우분투 시스템과 레드햇 엔터프라이즈 리눅스 또는 페도라 시스템에 커맨드 라인으로 로그인했다면
아주 약간의 차이만 느껴질 것이다. 두 시스템은 모두 공통의 디렉토리들과 유틸리티를 가지고 있고
기능 측면에서는 근본적으로 동일하다.
▷ 차이점 :
- 설치프로그램, 설치할 개별 패키지 선택, 설정 옵션등.
- 소프트웨어 관리툴 (데비안 기반 : APT(Advenced Package Tool) 계열 유틸)
- 룩앤필(Look-and-feel)관점 (초기화, 로그인 화면, 기본 데스크탑, 바탕화면, 아이콘 모음등..)
- 우분투의 경우 root계정이 신중하게 사용되도록 제한(su 대신 sudo 권장)
▶ 우분투 리소스 찾기
웹 포럼이자 소셜 네트워크인 이곳은 다양한 우분투 사용자와 그들을 지원하는 인력을 위한 커뮤니티 공간. |
|
공식적으로 우분투를 지원하고 있는 Canonical사로부터 유료 지원을 제공받을 수 있는곳. 만약 포럼을 검색하거나 답변을 기다릴 시간이 없거나 보다 신속한 지원을 원하는 경우, 한 달에 약 20달러의 비용 으로Canonical사로부터 전화, 이메일 그리고 웹을 통한 지원을 받을 수 있다. 또한 기업과 기업 사용자를 위한 우분투 트레이닝도 제공. |
|
각 버전에 대한 공식적인 최신 온라인 문서를 제공. 새로운 우분투 버전이 릴리즈된다면 해당 버전에 추가된 새로운 기능이나 달라진 내용이 무엇인지 이곳에서 찾을 수 있다. |
|
프린터 설정에서부터 삼바 파일 공유, 우분투 시스템을 최상의 상태로 유지할 수 있는 업데이트 작업까지 우분투와 관련되 다양한 사용법이 기록된 데스크탑 세션을 볼 수 있다. 이 사이트에 기여하고 싶은 우분투 사용자라면 Ubuntu Screencast Launchpad Team에 가입을 권한다. |
|
listinfo/ubuntu-users |
우분투 사용자들과 이메일을 통해 토론하고 함께 문제를 해결하고자 한다면, 우분투 사용자 메일링리스트에 가입. 우분투에 관한 것이라면 무엇이든 제안할 수 있다. 축적된 과거 자료를 보고자 한다면 https://lists.ubuntu.com/archives/ubuntu-users 참조. |
IRC 무료 채팅을 통해서 실시간으로 도움을 받고 싶다면 우분투 IRC 리소스 페이지를 방문한다. IRC 가이드라인, 클라이언트 프로그램, 채팅 서버 등에 대한 정보를 제공하고 있다. IRC를 통한 채팅 경험이 없다면 Ubuntu Code of Conduct page (www.ubuntulinux.org/community/conduct/) 도움을 구한다. |
|
리눅스와 호환된다고 알려진 USB 디바이스에 대한 정보를 공유. 이곳을 통해 USB 디바이스의 제조회사, 모델, 이름을 검색해볼 수 있으며 리눅스 환경에서의 사용 방법 등에 관한 정보도 얻을 수 있음. |
|
리눅스 성장과 발전을 위한 비영리 단체 |
|
SANE(Sacnner Access Now Easy)는 리눅스 환경에서의 문서 스캐닝에 초점을 맞춘 사이트. 만약 리눅스에서 스캐너 또는 스캐닝 기능이 포함된 복합기를 사용하고자 한다면, 이곳에서 리눅스를 적절히 지원 하고 있는 제조사를 찾아볼 수 있다. |
|
리눅스 문서화 프로젝트는 리눅스 대한 각종 안내서, 하우투 문서 그리고 FAQ 등의 온라인 문서 보관소. |
▶ 우분투 소프트웨어
우분투 패키지 웹사이트 : http://packages.ubuntu.com
시냅틱(Synaptic), APT, 그리고 업데이트 관리자 같은 표준툴들은 대부분 동일한 소프트웨어 설치 방법을 사용.
공식적으로 우분투용 패키지를 제공하지 않는 소프트웨어나 실험적인 소프트웨어가 필요한 경우라도,
대부분의 패키지들은 MD5sum 또는 GPG 키를 제공하기 때문에 다운로드받은 소프트웨어의 위조 여부
를 검증해볼 수 있다 - http://www.debian-administration.org/articles/375
(비표준 소프트웨어 사용과 관련해서 호환성 문제가 발생하거나 업그레이드 작업의 문제가 발생할 수 있음.)
▷ 공식적인 패키지 이외의 소프트웨어들을 살표볼 수 있는 웹사이트들.
리눅스 게임 창고. (다양한 리눅스 환경의 게임들) |
|
유닉스와 크로스플랫폼 소프트웨어, 테마, 액세서리 프로그램, 팜용 소프트웨어까지 방대한 양의 소프트웨어 제공. |
|
오픈소스 개발자들이 함께 새로운 프로젝트를 시작하고자 한다면 도움을 받을 수 있다. 프로젝트 개설하면 프로젝트 관리 툴, 리소스, 사용자와의 의사소통 및 코드 관리를 위한 툴뿐 아니라 프로젝트를 위한 웹 공간까지 사용할 수 있다. |
|
Linux.org는 리눅스 운동에 대한 정보를 제공하기 위해 1994년부터 운영되어 온 웹사이트. 모든 리눅스에 대한 정보의 보고로서 성장. 특히 애플리케이션 섹션은 리눅스 시스템에서 사용 가능한 광범위하고 다양한 소프트웨어를 안내할 것이다. |
'컴퓨터 서적 정리 > Ubuntu Linux Toolbox' 카테고리의 다른 글
[Chap2 #03] - APT 사용하여 Software 관리 (0) | 2011.08.04 |
---|---|
[Chap2 #02] - Debian Software Package 사용 (0) | 2011.08.04 |
[Chap1 #04] - 리눅스 참고 정보(help, man, info) (0) | 2011.08.04 |
[Chap1 #03] - 리눅스 명령어 찾기 (0) | 2011.08.04 |
UBUNTU LINUX TOOLBOX (0) | 2011.08.03 |
|
[ 원서 ] - E-Book [ View ]
|
Book Description: |
이 책에는 Ubuntu를 기반으로 하는 리눅스 배포판을 보다 더 유용하게 사용할 수 있는 방법(명령어) 이 소개되어 있다. 파일시스템 제어부터 멀티미디어 파일조작에 이르기까지 리눅스 시스템 관리에 필요한 1,000여개의 커맨드라인 명령어를 망라하고 있으므로 이 책을 통해 리눅스 시스템에 대한 이해를 넓힐 수 있다. 또한 항상 옆에 두고 필요할 때마다 바로바로 참조할 수 있도록 핵심내용을 중심으로 구성되어 있다. |
Table of Contents: |
역자 서문 |
'컴퓨터 서적 정리 > Ubuntu Linux Toolbox' 카테고리의 다른 글
[Chap2 #03] - APT 사용하여 Software 관리 (0) | 2011.08.04 |
---|---|
[Chap2 #02] - Debian Software Package 사용 (0) | 2011.08.04 |
[Chap1 #04] - 리눅스 참고 정보(help, man, info) (0) | 2011.08.04 |
[Chap1 #03] - 리눅스 명령어 찾기 (0) | 2011.08.04 |
[Chap1 #01] - 우분투, 데비안, 그리고 리눅스 (0) | 2011.08.03 |
[ 비트 설정 ] |
||||||||||||
▶ 특정 비트를 1로 설정 : 1과 |(or)연산. ▷ 5번 비트를 1로 설정>
위의 연산을 코드화 : a |= 0x00100000; ▷ 위의 0x001_0000은 0x1(0x000_0001)을 5번 쉬프트한 값과 같다. a |= 0x1 << 5;
▷ 5,3,2번 비트를 1로 설정>
위의 연산을 코드화 : a |= (0x1<<5)+(0x1<<3)+(0x1<<2); ▷ 3,2번 비트는 연속된 비트이기 때문에 0x3으로 묶어줄 수 있다. a |= (0x1<<5)+(0x3<<2); |
[ 비트 클리어 ] |
||||||||||||||||
▶ 특정 비트 클리어 : 0과 &연산. ▷ 1을 원하는 위치로 쉬프트하고 그 값에 대해 ~(NOT)연산을 해서 0으로 만듬. (0x0000, 0x0도 모두 0이기 때문에 0으로 자릿수를 표현할 수 없음)
▷ 2번 비트를 0으로 클리어>
위의 연산 코드화 : a &= ~(0x1<<2);
▷ 5,3,2번 비트 클리어>
위의 연산 코드화 : a &= ~((0x1<<5)+(0x3<<2)); |
[ 비트 반전 ] |
||||||||||||
▶ 특정 비트 반전 : 1과 ^연산. ( ^연산은 두 피연산자가 같으면 0, 다르면 1로 설정) ▷ 5번 비트 반전 >
위의 연산 코드화 : a ^= 0x1<<5
▷ 5,3,2번 비트 반전 >
위의 연산 코드화 : a ^= (0x1<<5)+(0x3<<2); |
[ 비트 검사 ] |
▶ 특정 비트가 0인지 1인지 검사. ▷ 5번째 비트가 0인지 1인지 검사 : a & (0x1 << 5) |
[ 비트 추출 ] |
▶ 특정 비트만 추출. ▷ [6:4] 비트만 추출하고 싶다면 : (a>>4) & 0x7 |
[ bit_macro.h ]
/* 한 비트 클리어 */ #define clear_bit(data, loc) ((data) &= ~(0x1 << (loc))) /* 연속된 여러 비트 클리어 */ #define clear_bits(data, area, loc) ((data) &= ~((area) << (loc))) /* 한 비트 설정 */ #define set_bit(data, loc) ((data) |= (0x1 << (loc))) /* 연속된 여러 비트 설정 */ #define set_bits(data, area, loc) ((data) |= ((area) << (loc))) /* 한 비트 반전 */ #define invert_bit(data, loc) ((data) ^= (0x1 << (loc))) /* 연속된 여러 비트 반전 */ #define invert_bits(data, area, loc) ((data) ^= ((area) << (loc))) /* 비트 검사 */ #define check_bit(data, loc) ((data) & (0x1 << (loc))) /* 비트 추출 */ #define extract_bits(data, area, loc) (((data) >> (loc)) & (area))
[ bit_test.c ]
#include <stdio.h> #include "bit_macro.h" void bitdisp(int c) { int i; for (i=7; i>=0; i--) printf("%1d", check_bit(c, i)? 1:0); putchar('\n'); } int main(void) { unsigned char a = 0xf0; // 11110000(₂) unsigned char b; printf("a 2진수로 출력 : "); bitdisp(a); puts("------------------------------------");
clear_bit(a, 5); /* 5번 비트 클리어 */ printf("5번 비트 클리어 : "); bitdisp(a); clear_bits(a, 0x7, 3); /* 5,4,3번의 연속 3비트 클리어 */ printf("5,4,3번 비트 클리어 : "); bitdisp(a); putchar('\n'); set_bit(a, 5); /* 5번 비트 설정 */ printf("5번 비트 설정 : "); bitdisp(a); set_bits(a, 0x7, 3); /* 5,4,3번 연속 비트 설정 */ printf("5,4,3번 비트 설정 : "); bitdisp(a); putchar('\n'); invert_bit(a, 5); /* 5번 비트 반전 */ printf("5번 비트 반전 : "); bitdisp(a); invert_bits(a, 0x7, 3); /* 5,4,3번 연속 비트 반전 */ printf("5,4,3번 비트 반전 : "); bitdisp(a); putchar('\n'); b = extract_bits(a, 0x7, 4); /* 6,5,4번 비트를 추출하여 b에 대입 */ printf("6,5,4번 비트 추출 : "); bitdisp(b); return 0; }
'Programming > C' 카테고리의 다른 글
The GNU C Library Reference Manual (0) | 2011.09.08 |
---|---|
The C Library Reference Guide (0) | 2011.09.08 |
다시 체계적으로 배우는 C언어 포인터 (0) | 2011.07.07 |
연산자 우선순위 (0) | 2010.05.05 |
매크로 (0) | 2010.05.05 |
▶ Null로 종결된 문자열 query 에 의해 가리키는 SQL 명령문을 실행한다.
mysql_query() - SQL 쿼리 실행 | |
형태 | int mysql_query(MYSQL *mysql, const char *query) |
리턴값 | 성공 : 0(zero) 에러 : Non-Zero. |
▶ length 바이트 길이의 문자열인 query에 의해 가리키는 SQL 쿼리를 실행한다.
mysql_real_query() - SQL 쿼리 실행 (바이너리 데이터를 포함한 쿼리) | |
형태 | int mysql_real_query(MYSQL *mysql, const char *query, unsigned long length) |
리턴값 | 성공 : 0(zero) 에러 : Non-Zero. |
▷ 일반적으로, 문자열은 하나의 싱글 SQL 명령문으로 구성된다.
그리고 사용자는 명령문에 종료 세미콜론 (';') 또는 \g를 명령문에 추가하지 말아야 한다.
다중 명령문 실행이 가능했다면, 문자열은 세미콜론들로 구분된 여러 개의 명령문으로 구성될 수 있다.
▷ mysql_query() 함수는 바이너리 데이터를 포함하는 쿼리들의 경우 사용될 수 없다.
바이너리 데이터에는 '\0' 문자가 포함될 수 있는데, mysql_query() 함수는 쿼리 문자열의 끝으로 해석될 수 있다.
바이너리 데이터를 포함한 쿼리의 경우 mysql_query() 함수보다 mysql_real_query() 함수를 사용.
▷ 쿼리 문자열에서 strlen() 을 호출하지 않기 때문에, mysql_real_query() 함수가 mysql_query() 함수보다 더 빠름.
▷ 쿼리 명령문이 결과 셋을 리턴하는지 알고 싶다면, mysql_field_count()를 사용해서 검사하도록 한다.
[ 에러 ] | |
CR_COMMANDS_OUT_OF_SYNC | 명령문이 불규칙한 순서로 실행됨 |
CR_SERVER_GONE_ERROR | MySQL 서버가 중단됨. |
CR_SERVER_LOST | 쿼리 동안 서버로의 연결이 끊김. |
CR_UNKNOWN_ERROR | 알 수 없는 에러 발생. |
'API 및 라이브러리 > MySQL C API' 카테고리의 다른 글
MySQL C API - 오류처리 (mysql_errno, mysql_error) (0) | 2011.07.12 |
---|---|
mysql_options() - 연결 옵션을 설정 (0) | 2011.07.12 |
mysql_real_connect() - MySQL 데이터베이스 연결 (0) | 2011.07.11 |
mysql_config명령을 이용한 MySQL C API 컴파일 (0) | 2011.07.11 |
MySQL C API 데이터 타입 (1) | 2011.07.11 |
▷ 모든 API함수에 대한 오류는 에러 코드를 되돌려 줌으로서 나타나며,
세부 내용은 접속 처리 구조체를 통해 알려준다.
오류 메시지를 처리할 때 다음과 같인 두 개의 루틴만 알고 있으면 된다.
mysql_errno() - 가장 최근에 실행된 MySQL API 함수의 에러 코드를 리턴. | |
형태 | unsigned int mysql_errno(MYSQL *mysql) |
인수 | mysql: MYSQL* 핸들 |
반환값 | 에러가 있을 경우: 마지막으로 호출된 API함수(mysql()_xxx)를 위한 에러 코드. 에러가 없을 경우: 0(zero) |
mysql_error() - 가장 최근에 실행된 MySQL API 함수의 에러 메시지 문자열 리턴. | |
형태 | const char *mysql_errno(MYSQL *mysql) |
인수 | mysql: MYSQL* 핸들 |
반환값 | 에러가 있을 경우: 마지막으로 호출된 API함수(mysql()_xxx)를 위한 에러 메시지 문자열. 에러가 없을 경우: 빈 문자열. |
▶ mysql_error()함수의 메시지는 내부의 정적 공간이므로,
오류 메시지를 저장하려면 메시지를 다른 위치에 복사하면 된다.
▶ mysql_errno() 함수에 의해 리턴된 MySQL-지정 에러 숫자들은
mysql_sqlstate() 함수에 의해 리턴된 SQLSTATE 값과 다르다.
예를 들어, mysql 클라이언트 프로그램은 다음 포맷을 사용 중인 에러들을 보여준다.
여기서 1146 은 mysql_errno() 함수 값이고, '42S02'는 mysql_sqlstate() 함수 값과 일치한다:
shell> SELECT * FROM no_such_table; ERROR 1146 (42S02): Table 'test.no_such_table' doesn't exist |
주의:
mysql_fetch_row() 같은 몇몇 함수들은 성공하면 mysql_errno()를 설정하지 않음.
(경험적으로 서버에 정보를 요구하는 함수는, 성공했을 경우에 mysql_errno()를 재설정)
에러 메시지가 기술된 헤더 파일:
클라이언트 에러 메시지 숫자: MySQL errmsg.h 헤더 파일에 기술.
서버 에러 메시지 숫자 : mysqld_error.h 헤더 파일에 기술.
예제:
MYSQL mysql; … mysql_init(&mysql); mysql_option(&mysql, MYSQL_READ_DEFAULT_GROUP, "your_prog_name"); if ( ! mysql_real_connect(&mysql, "host", "user", "passwd", "database", 0, NULL, 0)) { ■■■■fprintf(stderr, "Connection error %d: %s\n", mysql_errno(&mysql), mysql_error(&mysql)); } … |
'API 및 라이브러리 > MySQL C API' 카테고리의 다른 글
mysql_[real_]query() - SQL 쿼리 실행 (0) | 2011.07.12 |
---|---|
mysql_options() - 연결 옵션을 설정 (0) | 2011.07.12 |
mysql_real_connect() - MySQL 데이터베이스 연결 (0) | 2011.07.11 |
mysql_config명령을 이용한 MySQL C API 컴파일 (0) | 2011.07.11 |
MySQL C API 데이터 타입 (1) | 2011.07.11 |
mysql_options() - 별도 연결 옵션을 설정하는데 사용될 수 있으며, 연결 시 작동에 영향을 미칠 수 있다. |
|
형태 |
int mysql_options(MYSQL *mysql, enum mysql_option option, const void *argument) |
인수 |
mysql: MYSQL* 핸들 option: 사용자가 설정을 원하는 옵션 argument: 옵션 값. (옵션이 정수라면, 포인터로 가리킨다) |
리턴값 |
성공: 0(Zero). 실패: 알 수 없는 옵션을 사용하면, Non-zero. |
▶ mysql_init() 함수 후에 그리고 mysql_connect() 또는 mysql_real_connect()함수 전에 호출되어야 한다.
mysql_init(); mysql_options() ß mysql_init()와 mysql_connect() 사이에 필요한 횟수만큼 이 루틴을 호출 할 수 있다. mysql_options() … mysql_connect(); |
▶ 일반적으로 자주 사용하는 옵션 몇 가지:
enum 옵션 |
변수 타입 |
기능 |
MYSQL_INIT_COMMAND |
const char * |
접속한 시간을 매 시간 보내는 명령 |
MYSQL_OPT_COMPRESS |
None (use NULL) |
압축된 클라이언트/서버 프로토콜을 사용. |
MYSQL_OPT_CONNECT_TIMEOUT |
unsigned int * |
접속의 타임 아웃 시간(초 단위). |
MYSQL_READ_DEFAULT_FILE |
char * |
my.cnf 로부터 대신에 네임드 옵션 파일에서 옵션을 읽음 |
MYSQL_READ_DEFAULT_GROUP |
char * |
my.cnf의 네임드 그룹 또는 MYSQL_READ_DEFAULT_FILE 로 지정한 파일에서 옵션을 읽음 |
▷ MYSQL_READ_DEFAULT_FILE 또는 MYSQL_READ_DEFAULT_GROUP 을 사용하면,
client 그룹은 항상 읽힌다는 것을 명심하라.
▶ 옵션 파일에서 지정된 그룹은 다음 옵션들을 포함할 수 있다:
옵션 |
설명 |
connect-timeout |
수 초 내에 타임아웃 연결. 리눅스에서 이 타임아웃은 서버로부터 처음 응답을 기다리는데 사용된다. |
compress |
간단한 클라이언트/서버 프로토콜을 사용. |
database |
연결 명령문에 데이터베이스가 지정되어 있지 않았다면, 이 데이터베이스로 연결. |
debug |
디버그 옵션. |
disable-local-infile |
LOAD DATA LOCAL사용이 불가능 |
host |
디폴트 호스트이름. |
init-command |
MySQL 서버로 연결 시 실행하기 위한 명령. 재연결 시 자동으로재실행됨. |
interactive-timeout |
CLIENT_INTERACTIVE 를 mysql_real_connect()함수에 지정하는 것과 같다. 22.2.3.51, "mysql_real_connect()"장 참조 |
local-infile[=(0|1)] |
변수가 없거나 변수가 != 0 라면, LOAD DATA LOCAL사용이 가능하다. |
max_allowed_packet |
패킷 클라이언트 최대 사이즈는 서버로부터 읽을 수 있다. |
multi-results |
다중 명령문 실행 또는 스토어드 프로시져로부터 멀티 결과 셋허용. |
multi-statements |
클라이언트가 싱글 문자열(스트링/.';'로 나누어진) 내에 다중 명령문을 보내도록 허용. |
password |
디폴트 패스워드. |
pipe |
NT 기반에서 MySQL 서버에 연결하기 위해 명명된 파이프 사용. |
protocol={TCP|SOCKET|PIPE|MEMORY} |
서버로 연결 시 사용하는 프로토콜. |
port |
디폴트 포트 넘버. |
return-found-rows |
UPDATE 사용시, 업데이트된 로우들 대신에 검색된 로우들을 리턴하기 위해 mysql_info()함수를 호출. |
shared-memory-base-name=name |
서버로 연결하기 위해 사용되는 공유 메머리 이름(디폴트는"MYSQL"). |
socket |
디폴트 소켓 파일. |
user |
디폴트 사용자. |
[ 예제 ] |
MYSQL mysql; unsigned int timeout = 7; … mysql_init(&mysql); mysql_options(&mysql, MYSQL_OPT_COMPRESS, 0); mysql_options(&mysql, MYSQL_READ_DEFAULT_GROUP, "odbc"); mysql_options(&mysql, MYSQL_OPT_CONNECT_TIMEOUT, (const char *)&timeout); if (!mysql_real_connect(&mysql,"host","user","passwd","database",0,NULL,0)) { fprintf(stderr, "Failed to connect to database: Error: %s\n", mysql_error(&mysql)); } … |
이 코드는 클라이언트가 압축된 클라이언트/서버 프로토콜을 사용(MYSQL_OPT_COMPRESS).
my.cnf 파일 내에서 odbc 섹션으로부터 추가적인 옵션을 읽도록 요청(MYSQL_READ_DEFAULT_GROUP).
접속 시간 초과를 7초로 설정(MYSQL_OPT_CONNECT_TIMEOUT).
'API 및 라이브러리 > MySQL C API' 카테고리의 다른 글
mysql_[real_]query() - SQL 쿼리 실행 (0) | 2011.07.12 |
---|---|
MySQL C API - 오류처리 (mysql_errno, mysql_error) (0) | 2011.07.12 |
mysql_real_connect() - MySQL 데이터베이스 연결 (0) | 2011.07.11 |
mysql_config명령을 이용한 MySQL C API 컴파일 (0) | 2011.07.11 |
MySQL C API 데이터 타입 (1) | 2011.07.11 |
mysql_real_connect() - Mysql 데이터베이스 엔진으로 연결 시도. |
|
형태 & 인수 |
MYSQL *mysql_real_connect( MYSQL *mysql, /* MYSQL 구조의 어드레스 */ const char *host, /* 호스트 이름 또는 IP 어드레스 (default = localhost) */ const char *user, /* MySQL Login ID (default = 현재 로그인 이름) */ const char *passwd, /* 패스워드 (default = none) */ const char *db, /* 데이터베이스 이름 (default = none) */ unsigned int port, /* TCP/IP 연결 포트 (use default) */ const char *unix_socket, /* 소켓 (use default) */ unsigned long client_flag) /* flag (none) */ |
리턴 값 |
성공 : MYSQL* 연결 핸들 (= 첫 번째 파라미터) 실패 : NULL |
사용자가 유효한 MYSQL 연결 핸들 구조를 요구하는 다른 어떤 API 함수를 실행할 수 있기 전에 성공적으로 완료되어야 한다. |
▶ client_flag 값은 대체로 0이다. 그러나 정확한 기능을 작동하기 위해 다음 플래그의 조합으로 설정될 수 있다:
플래그(Flag) 이름 |
플래그(Flag) 설명 |
CLIENT_COMPRESS |
압축 프로토콜 사용. |
CLIENT_FOUND_ROWS |
변경된 로우의 숫자가 아니라 찾은(맞는) 로우들의 숫자를 리턴. |
CLIENT_IGNORE_SPACE |
함수 이름 후에 공간 허용. 모든 함수 이름을 예비의 단어로 만듦. |
CLIENT_INTERACTIVE |
interactive_timeout 초 허용 (wait_timeout 초대신에) of inactivity before closing the connection. 클라이언트 세션 wait_timeout 변수는 세션 interactive_timeout 변수 값으로 설정. |
CLIENT_LOCAL_FILES |
LOAD DATA LOCAL 조정 가능. |
CLIENT_MULTI_STATEMENTS |
싱글 문자열 (';'로 나눠진)에서 클라이언트가 다중(멀티) 명령문을 보내도록 서버에 전달. 만약 이 플래그가 설정되어 있지 않다면, 멀티-명령문 실행은 불가능하다. |
CLIENT_MULTI_RESULTS |
클라이언트가 멀티-명령문 실행 또는 스토어드 프로시저로부터 멀티 결과 셋을 조정할 수 있다는 것을 서버에 전달. CLIENT_MULTI_STATEMENTS이 설정되어 있다면, 이것은 자동적으로 설정. |
CLIENT_NO_SCHEMA |
db_name.tbl_name.col_name 신텍스를 허용하지 않음. 이것은 ODBC용이다. ODBC 프로그램에곤란한 버그에 사용하는 신텍스를 사용할 경우, parser(쿼리문 분석기)가 에러를 출력하도록 한다. |
CLIENT_ODBC |
원격 데이터베이스를 사용할 때 ODBC를 사용하고 있는지 확인할 수 있다. |
CLIENT_SSL |
SSL 사용. 이 옵션은 어플리케이션 프로그램으로 설정될 수 없다; 이것은 내부적으로 클라이언트 라이브러리 내에 설정된다. mysql_real_connect()함수를 호출하기 전에mysql_ssl_set()함수를 사용. |
[ 에러 ] |
|
CR_CONN_HOST_ERROR |
MySQL 서버로의 연결 실패. |
CR_CONNECTION_ERROR |
로컬 MySQL 서버로의 연결 실패 |
CR_IPSOCK_ERROR |
IP소켓 생성 실패. |
CR_OUT_OF_MEMORY |
메모리 부족. |
CR_SOCKET_CREATE_ERROR |
유닉스 소켓 생성 실패. |
CR_UNKNOWN_HOST |
호스트 이름 용 IP 어드레스 찾기 실패. |
CR_NAMEDPIPEOPEN_ERROR |
윈도우에서 명명된 파이프 생성 실패 |
CR_NAMEDPIPEWAIT_ERROR |
윈도우에서 명명된 파이프 대기(wait for) 실패. |
CR_NAMEDPIPESETSTATE_ERROR |
윈도우에서 파이프 핸들러(조정자) 획득 실패 |
CR_SERVER_LOST |
connect_timeout > 0 이고 서버에 연결하는데 connect_timeout 초 보다 오래 걸리면 또는 서버가 or init-command을 실행하는 동안 죽는다면 실패. |
[ 예제 ]
#include <stdio.h> #include <stdlib.h> #include <mysql.h> #define def_host_name NULL /* host to connect to (default = localhost) */ #define def_user_name "rick" /* user name (default = your login name) "*/ #define def_password "bar" /* password (default = none) */ #define def_db_name NULL /* dtabases to use (default = none) */ #define def_port_num 0 /* use default port */ #define def_socket_name NULL /* use default socket name */ MYSQL my_conn; /* pointer to connection handler */ int main(int argc, char *argv[]) { mysql_init(&my_conn); if ( mysql_real_connect ( &my_conn, /* pointer to connection handler */ def_host_name, /* host to connect to */ def_user_name, /* user name */ def_password, /* password */ def_db_name, /* database to use */ def_port_num, /* port (use default) */ def_socket_name, /* socket (use default) */ 0) /* flags (none) */ ) { printf("Connection success\n"); } else { fprintf(stderr, "Failed to connect to databases: Error: %s\n", mysql_error(&my_conn)); } mysql_close(&my_conn); return EXIT_SUCCESS; }
'API 및 라이브러리 > MySQL C API' 카테고리의 다른 글
MySQL C API - 오류처리 (mysql_errno, mysql_error) (0) | 2011.07.12 |
---|---|
mysql_options() - 연결 옵션을 설정 (0) | 2011.07.12 |
mysql_config명령을 이용한 MySQL C API 컴파일 (0) | 2011.07.11 |
MySQL C API 데이터 타입 (1) | 2011.07.11 |
MySQL C API 함수 개요 (0) | 2011.07.10 |