본문 바로가기

C19

[C/C++] C++ curl handler class 예제, C언어 curl 구현 C++ curl handler class 예제 C언어 curl, C++ curl, libcurl, linux curl C++ 클래스로 curl 을 쉽게 사용하게끔 구현하여 공유한다. 혹시 C에서 사용하고 싶다면 해당 소스코드의 클래스 내에 libcurl 함수를 제어하는 부분만 뽑아서 사용하길 바란다. https://github.com/muabow/home/tree/main/library/cpp/api_curl GitHub - muabow/home: C/C++, PHP, GO source/library C/C++, PHP, GO source/library. Contribute to muabow/home development by creating an account on GitHub. github.com 목.. 2022. 1. 13.
[C/C++] C언어 Big-endian <-> Little-endian 상호 변환 C언어 빅엔디안 리틀엔디안 상호 변환 C언어로 작성된 엔디안 체크 방법과 빅엔디안과 리틀엔디안 간 상호 교환하는 방법이다. 소스코드 1. 엔디안 체크 방법 int value = 1; if( *(char *)&value == 0 ) { printf("Big-endian\n"); } else { printf("Little-endian\n"); } 2. 전체 코드 #include // function : change to little-endian int to_le(int _target) { unsigned char bytes[4]; int ret; bytes[0] = (unsigned char)((_target >> 24) & 0xff); bytes[1] = (unsigned char)((_target >> .. 2022. 1. 13.
[C/C++] sprintf indicator 및 format 관련 sprintf indicator 및 format 관련 영어 원문을 포맷만 정리했다. 크게 어려운 내용은 없고 예제의 포맷과 결과만 봐도 도움이 될 것으로 보인다. The sprintf format of Ruby is basically the same as that in C. However, there are some differences, such as no short or long modifier as in C, there is a 2-bit variable indicator (%b), and not all of the dialects of sprintf (': 3-digit separators) are supported. A complete explanation of Ruby's sprintf for.. 2022. 1. 13.
[C/C++] parse mp3 header/C언어 MP3 헤더 분석 함수 공유 parse mp3 header C언어 MP3 헤더 분석에 도움이 될 함수를 공유한다. 이번 코드는 C언어를 기준으로 작성하였고 main()이 없이 함수만 공유하니 상황에 맞게 사용하면 되겠다. MP3 파일 또는 스트리밍의 구성은 AAU(Audio Access Uint)의 연속으로 이루어져 있으며 각 AAU는 매직 비트, 헤더(프레임 정보), 프레임 데이터로 구성이 되어있다. 즉 MP3 파일을 재생하기 위해선 샘플 레이트, 비트레이트, 채널, MP3 코덱 정보 등 재생 정보가 필요한데 이 정보는 각각의 AAU마다 존재하는 헤더에 구성되어있단 것이다. 위의 이유로 프레임데이터를 추출하기 위해선 AAU의 정보를 추출하는 것이 매우 중요하고 아래 head parser는 그것에 도움을 줄 수 있다. 소스코드 #i.. 2022. 1. 7.
[C/C++] ALSA PCM capture(recoding) 소스 코드 공유 ALSA PCM capture, ALSA recoding https://github.com/muabow/home/tree/main/src/cpp/pcm_capture GitHub - muabow/home: C/C++, PHP, GO source/library C/C++, PHP, GO source/library. Contribute to muabow/home development by creating an account on GitHub. github.com Linux ALSA driver를 이용한 audio capture 프로그램 샘플을 작성하였다. 코드 내에 주어진 파라미터 대로 오디오를 읽어 capture event handler를 통해 pcm raw 파일로 저장한다. 동작을 위한 내용은 READM.. 2021. 12. 28.
[C/C++] signal handler library 활용과 소스코드 공유 signal handler library C/C++ 에는 signal.h 를 사용한 signal 함수가 존재한다. 시스템 인터럽트 외 여러 상황에 사용할 수 있기 때문에 필수로 시그널 처리를 하게 된다. 가장 쉬운 예를 들면 ctrl + c를 통해 SIGINT를 발생시켜 프로그램을 종료할 때 메모리 반환을 하여 메모리 누수를 막거나 소켓 또는 IO 핸들러들의 상태를 닫아주어 graceful 한 종료를 해야 할 때 사용된다. 수많은 프로그램을 작성하면서 번번이 signal에 대한 정의와 시그널 처리에 따른 콜백 함수 등을 작성하기 귀찮아 라이브러리로 작성하였고 이를 공유한다. https://github.com/muabow/home/tree/main/library/cpp/lib_signal GitHub - .. 2021. 12. 24.
[C/C++] pthread condition 설명 pthread condition pthread POSIX 스레드(POSIX Threads, PThread)로 프로그램의 병렬 처리를 제공하는 표준 API, thread는 하나의 프로그램 처리 단위이다. pthread_cond pthread의 조건 변수를 통한 thread 제어 역할을 수행한다. 1. 사용법 #include pthread_cond_t cond = PTHREAD_COND_INITIALIZER; int pthread_cond_init(pthread_cond_t *cond, pthread_condattr_t *cond_attr); int pthread_cond_signal(pthread_cond_t *cond); int pthread_cond_broadcast(pthread_cond_t *con.. 2020. 3. 30.
[C/C++] pthread_mutex_lock 설명 pthread_mutex_lock - 뮤텍스 잠금을 얻거나 해제 1. 사용법 #include int pthread_mutex_lock(pthread_mutex_t *mutex); int pthread_mutex_trylock(pthread_mutex_t *mutex); int pthread_mutex_unlock(pthread_mutex_t *mutex); int pthread_mutex_destroy(pthread_mutex_t *mutex); 2. 설명 * mutex - MUTual EXclusion(상호 배제)devide의 줄임말로 쓰레드간 공유하는 데이터 영역을 보호하기 위해서 사용 - 데이터 영역의 보호는 critical section(임계 영역)을 만들고 임계 영역내에 단하나의 쓰레드만이 진입.. 2020. 3. 30.