본문 바로가기

c언어22

[C/C++] C언어 파일 생성/삭제 이벤트 모니터링 / inotify, event monitoring C언어 파일 생성/삭제 이벤트 확인 inotify - monitoring filesystem events, inotify 를 이용하여 파일시스템 이벤트를 모니터링하는 프로그램을 만들어보자. 응용 또는 질문은 댓글에 남겨주면 성실하게 답장해주겠다. 이번에도 늘 그렇듯 완성된 동작의 소스코드를 동작한다. 이번 소스코드에서는 생성(IN_CREATE)와 삭제(IN_DELETE)만 사용하였지만 더 많은 event trigger가 존재한다. inotify의 man page 일부 발췌 IN_ACCESS (+) File was accessed (e.g., read(2), execve(2)). IN_ATTRIB (*) Metadata changed—for example, permissions (e.g., chmod(2).. 2022. 1. 20.
[C/C++] C언어 mmap, msync, munmap 설명 mmap, msync, munmap 1.1. 사용법 #include void * mmap(void *start, size_t length, int prot, int flags, int flides, off_t offset); 1.2. 설명 mmap() 함수는 flides로 지정된 파일(혹은 다른 객체)에서 offset을 시작으로 length바이트 만큼을 start주소로 대응시키도록 한다. start주소는 단지 그 주소를 사용했으면 좋겠다는 정도로 보통 0을 지정한다. mmap는 지정된 영역이 대응된 실제 시작위치를 반환한다. prot인자는 원하는 메모리 보호모드를 설정한다. 사용할 수 있는 비트는 다음과 같다. PROT_EXEC 페이지는 실행 가능하다. PROT_READ 페이지는 읽을 수 있다. PROT.. 2022. 1. 19.
[C/C++] C언어 프로그램/함수 실행 시간 측정, us 마이크로초 기준 C언어 프로그램/함수 실행 시간 측정 C언어에서 사용할 수 있는 프로그램/함수 실행 간 시간 측정 방법을 공유한다. timeval 구조체를 이용하여 작성하였고 마이크로초(us) 단위로 측정하였다. 단위의 변환이 필요하다면 코드를 고쳐서 사용하도록 하자. 소스코드 - sleep 하여 1000000 us(1초)에 근사한 측정치를 보여주는지 확인하자. #include #include #include double calc_diff_time(struct timeval _x, struct timeval _y) { double x_us, y_us, diff; x_us = (double)_x.tv_sec * 1000000 + (double)_x.tv_usec; y_us = (double)_y.tv_sec * 10000.. 2022. 1. 18.
[C/C++] C++ 프로그램/함수 실행 시간 측정, ms 밀리초 기준 C++ 프로그램/함수 실행 시간 측정 C++ 에서 사용할 수 있는 프로그램/함수 실행 간 시간 측정 방법을 공유한다. chrono 를 이용하여 작성하였고 밀리초(ms) 단위로 측정하였다. 더 작은 단위가 필요하다면 duration_cast 의 인자를 원하는 단위로 변경하여 사용하면 된다. 소스코드 - 100ms 씩 10번을 sleep 하여 1000ms(1초) 에 근사한 측정치를 보여주는지 확인하자. #include #include #include using namespace std; using namespace chrono; int main(int _argc, char *_argv[]) { system_clock::time_point t_time_begin, t_time_end; milliseconds .. 2022. 1. 18.
출력에 색깔 입히기 정리 및 결과, ansi color 출력에 색깔 입히기 정리 및 결과 일전 C언어 색깔 입히기 포스팅에 이어 일부가 아닌 전체적인 ansi color 코드와 출력을 알아보고자 한다. https://muabow.tistory.com/173 [C/C++] C언어 출력에 색깔 입히기 예제 C언어 출력에 색깔 입히기 - print color, ANSI color, 설명, 예제 C 언어로 개발을 하다 보면 출력이나 로그에 색깔을 써야 할 때가 있는데 간단하게 정의해 놓고 사용한다. 샘플 코드는 표와 같이 사 muabow.tistory.com 위 포스팅의 코드 확장이라고 봐주면 된다. 스크립트 ansi.sh 내용 ansi color는 shell 뿐만 아니라 C/C++ 및 리눅스의 모든 출력에서 사용이 가능하다. 아래 스크립트 내용과 밑에 결과 화면 .. 2022. 1. 17.
[C/C++] C++ JSON parser example, C언어 JSON 파서 예제, rapidjson C++ JSON parser example 본 json_parser 라이브러리는 rapidjson을 활용한 wrapper이다. 이미 그 자체로 훌륭한 JSON parser 인 rapidjson은 소스코드가 아닌 헤더로만 구성되어있고 사용자의 역량에 따라 코드 표현이 천차만별이라 같은 선언, 같은 메서드, 같은 출력을 보장하기 위해(공용화) wrapper class를 만들게 되었다. * rapidjson 홈페이지, tutorial이 무척 잘되어있다. https://rapidjson.org/ RapidJSON: Main Page A fast JSON parser/generator for C++ with both SAX/DOM style API Tencent is pleased to support the op.. 2022. 1. 17.
Rest API 요청 언어별 정리, CURL/PHP/PYTHON/C/C++/QT/JAVA/Node.js Rest API 요청 언어별 정리 Rest API 호출 방식 소스코드를 각 언어 별로 정리해보았다. 무엇을 좋아할지 몰라 잔뜩 준비 했으니 쓸모가 있었으면 좋겠다. 준비한 언어 목록은 다음과 같다. - 목록 - 1. CURL 2. PHP 3. PYTHON 4. C/C++ 5. QT 6. JAVA 7. Node.js # 소스코드 - 각각의 요청은 http://httpbin.org/get 를 대상으로한다. - GET method 한정하여 작성. 코드 내 POST로 변경할 수 있는 요소들이 있으니 필요하면 수정해서 사용할 것. - 모든 request의 response 응 동일하기 때문에 가장 아래에 응답 결과로 정리한다. 1. CURL - OS: Ubuntu 16.04.7 LTS, Version: curl 7.. 2022. 1. 17.
[C/C++] C언어 MAC 주소 읽기 구현, get mac address C언어 MAC 주소 읽기 구현 MAC 주소를 얻는 소스 코드를 구현한다. 네트워크 관련 처리를 하다보면 MAC 주소가 필요한 경우가 자주 발생한다. 이 역시 shell 명령을 통해 MAC 주소를 얻는거보다 소스코드로 구현하는게 깔끔하고 빠르다. 소스코드 이 역시 C언어로 변경하여 사용할 수 있다. 단지 return type을 string으로 받고 싶어 cpp로 했을 뿐. C언어 타입으로 변경하려면 cpp 요소만 제거하여 사용하자. * 이더넷 인터페이스가 많은 경우 count_if 항목에서 req->ifr_name 의 인터페이스명을 보고 판단하여 mac 주소를 획득하면 된다. 물론 한번에 다 얻을 수 도 있으니 활용하자. #include #include #include #include #include #i.. 2022. 1. 16.