본문 바로가기
728x90

전체 글553

c와 mariadb INSERT시에 한글 깨짐 현상 전부 UTF8로 세팅해서 했다곤 생각하는데 직접 INSERT 할때 한글이 깨져서 나왔다. 뭐가 됐든 코드 내에서 다시한번 세팅을 해줬다 ​ db_conn.c #include "changjo.h" MYSQL *db_init(char *ip, char *user, char *pw, char *db) { conn_ptr = mysql_init(NULL); if(!conn_ptr) { printf("error"); exit(0); } conn_ptr = mysql_real_connect(conn_ptr, ip, user, pw, db, 0, NULL, 0); if(!conn_ptr) { printf("cannot connect : %s\n", mysql_error(conn_ptr)); } mysql_set_ch.. 2023. 1. 8.
pthread에 관한 나만의 고찰 1. pthread_exit 를 한 후에는 printf등 함수가 안먹는다. 2. pthread_create 실행 라인에서 멈춰있지 않는다. -> 함수를 다 실행하고 밑에 라인을 실행하는게 아니다. 그래서 sleep을 주는것이다(thread작업이 끝날때까지 기다려주는 것, pause사용해도돼). sub thread들이 끝날때까지 기다려주지 않고 main프로세스가 죽어버리면 thread는 자신의 기능을 다하지 못하고 죽어버린다. 3. pthread_join을 통해서 종료를 기다릴 수 있다 -> 데몬프로세스일때 스레드종료 후 프로세스 종료를 하지 않기 때문에 각각의 thread를 detach로 죽인다.(업무) ​ 번외로 밑에 있는 소스 코드를 실행하기 위한 gcc gcc -o a.out test.c -lpth.. 2023. 1. 8.
pthread 스레드 종료시점에 관한 이야기 일반적으로 pthread_create를 통해서 쓰레드가 생성되고 다 사용된 쓰레드는 해당 쓰레드를 호출한 곳에서 pthread_join을 통하여 해당 쓰레드의 자원을 해제하여 종료하는 흐름을 갖는다고 한다.. ​ ​ 프로세스 흐름을 보며 pthread의 종료시점을 찾던 중 pthread_detach에 관해 찾았다. ​ ​ 이미 생성된 쓰레드에게 detach 옵션을 주어 독립적으로 자원을 반환 하도록 하는 방법이다. ​ ​ function { pthread_create(); ​ pthread_detach (pthread_id); pthread_exit ((void *)NULL); } ​ https://www.morenice.kr/75 ​ 2023. 1. 8.
Log에 라인번호 찍기(+파일명, +함수명) #include 를 이용하는 방법이 있다. ( /var/log/messages-날짜) ​ main.c #include #include // syslog사용하기위해서 int main() { printf(" 파일명: %s \n 라인번호: %d \n 함수명 : %s\n", __FILE__, __LINE__, __FUNCTION__); syslog(LOG_ERR, " 파일명: %s \n 라인번호: %d \n 함수명 : %s\n", __FILE__, __LINE__, __FUNCTION__); // 헤더파일 선언 되어있어야함 return 0; } https://qvil.github.io/linux/c-syslog/ ​ 2023. 1. 8.
동적라이브러리 만들기 tclock.c tclock.h gcc -fPIC -c libtclock.c gcc -shared -o libtclock.so libtclock.o -> 라이브러리 경로 같은걸 설정해야 돌아간다. https://www.joinc.co.kr/w/Site/C/Documents/Make_Library#AEN98 2023. 1. 8.
clock_t 를 이용한 c프로그램 시간측정 #include #include int main() { clock_t start, end; int i, sum; sum = 0; start = clock(); for( i = 0 ; i < 10000000 ; i++) sum+=1; end = clock(); printf("%d, time = %f\n", sum, (double) (end - start)/CLOCKS_PER_SEC); } https://acholyte.tistory.com/entry/C%EC%96%B8%EC%96%B4-%ED%94%84%EB%A1%9C%EA%B7%B8%EB%9E%A8-%EC%86%8D%EB%8F%84-%EC%B8%A1%EC%A0%95 ​ 2023. 1. 8.
LOAD DATA LOCAL INFILE (대용량 데이터 insert) 한줄마다 커밋을 하면 매우 느려진다. autocommit을 끄고 할 수 도 있지만 load data local infile이 훨씬빠르다고 한다. 직접 본적이 있다.. LOAD DATA LOCAL INFILE '/home/changjo/Cur.csv' INTO TABLE CHANGJO.CUR FIELDS TERMINATED BY ',' IGNORE 1 ROWS; LOAD DATA LOCAL INFILE '/home/changjo/TAB.csv' INTO TABLE CHANGJO.TAB FIELDS TERMINATED BY ',' ENCLOSED BY '"' ESCAPED BY '"' 2023. 1. 8.
포인터 주소 다루기 포인터 주소를 잘 다루고 싶다.. + 시스템 함수 잘 다루고 싶다.. #include #include int main() { char *ad; int len = 1; char *t; char test[10] = "123456790"; ad = strstr(test, "45"); t = ad; printf("t = %s\n", t); int i = 0; for(i = 0 ; i < strlen(test) ; i++) { if(*t == '5') { printf("IN\n"); break; } else len++; t++; } printf("%s,,%d\n", ad, len); return 0; } 2023. 1. 8.
c-json lib 설치 및 makefile 리눅스c에서 json을 사용하기 위해서 라이브러리를 설치했다. --->라이브러리를 쓸려하니 완성된 json 형태가 아니면 쓰기가 어렵다. ​ yum install json-c-devel ​ 설치 완료 후 Makefile ---> -ljson-c 를 추가해줘야한다. 소스코드에는 헤더파일인 #include 추가 CC=gcc TARGET=a.out INCLUDE = -I/changjo/changjo.h LIB = -lcurl -ljson-c OBJECT=main.o $(TARGET) : $(OBJECT) $(CC) -o $(TARGET) main.o $(INCLUDE) $(LIB) main.o : main.c $(CC) -c -o main.o main.c $(INCLUDE) clean: rm $(OBJECT).. 2023. 1. 8.
코스콤 koscom api 관련 문서와 링크 https://developers.koscom.co.kr/resources/documentation/RESTAPIGuide.pdf ​ https://developers.koscom.co.kr/apiresources 2023. 1. 8.
728x90