프로그래밍/리눅스 프로그래밍 51

[Linux] dynamic library (dlopen, dlsym, dlclose, dlerror) 사용법

개요 dlopen의 경우 library를 run time에 Load하여 사용 하려고 할 때 사용 합니다. 헤더 #include dlopen 관련 함수 #include #라이브러리를 open 합니다. void *dlopen (const char *filename, int flag); #라이브러리 오픈 관련 에러는 표현 합니다. const char *dlerror(void); #so파일의 symbol 정보를 가져옵니다. #반환 # - 해당 symbol과 연관된 주소값이 반환 #사용법 # - 이를 받아서 함수포인터 또는 변수로 저장 void *dlsym(void *handle, const char *symbol); #라이브러리를 close 합니다. int dlclose (void *handle); 출처: ht..

[cmake] cmake 기초 부터 활용 까지

cmake란? 쉽게 말하면? - source의 코드의 빌드를 쉽게 해주는 tool 어렵게 말하면? - Meta-Make기반의 빌드 프로세스를 관리하고 작성는 툴 - 빌드에 필요한 설정, 의존성, 패키징을 위한 파일을 생성 및 관리 함 - 직접 빌드를 수행하는 빌드 시스템이 아님, build는 컴파일러가 한다. 핵심 기본 구조 - 프로젝트의 기본 구조 - 출처 : https://medium.com/swlh/c-project-structure-for-cmake-67d60135f6f5 Simple project structure The main idea about project structure is that you have at least 2 folders include and src. Folders pur..

[bash] 알면 좋은 팁!!

source와 . source와 .은 파일을 실행하는 명령어입니다. source - 현재 shell 기반으로 실행됨 Ex) #source test.sh 활용 1) bash 프로그램에서 다른 bash 프로그램은 include 할 때 사용됨. 활용 2) 현재 shell에 설정 사항을 바로 적용 하고 싶을떄 사용 . - 신규 shell을 하나 만들어서 실행됨 Ex) #. test.sh or #./test.sh 활용 1) bash 프로그램을 단독으로 실행 하고 싶을때 사용. bash 프로그램 대부분 이 방식으로 사용함.

[bash script] 유용한 bash 스크립트 모음

실행 결과를 바로 읽어서 한 줄씩 처리 하기 #!/bin/bash find ./ -name config.log | while read file_name; do echo "$file_name " && tail -n 1 $file_name done bash 세부 명령 read - 표준 입력(파이프라인 입력 또는 키보드 입력)에서 한 줄의 내용씩 읽어 들이는 명령어이다. while - 반복문 find - 검색 명령 Option 만들기 #!/bin/bash # Bash Menu Script Example PS3='Please enter your choice: ' options=("Option 1" "Option 2" "Option 3" "Quit") select opt in "${options[@]}" do c..

[cross-platform] ld-linux-x86-64.so 란

ld-linux-x86-64.so 란? elf interpreter이며 이를 이용하면 실행 파일과 관련된 shared library를 연결 시켜주는 역활을 합니다. 언제 사용하나? linux에서 다른 여러 platform에서 프로그램을 돌리고 싶을때 상용합니다. ld-linux-x8-64.so는 shared library path를 실행 시점에 다시 지정 해줄수 있기 때문이 가능 합니다. 핵심 컴파일 환경에서 "ld-linux-x86-64.so"와 "실행 파일"에 필요한 shared library를 실행 할 환경에 복사한 후 "ld-linux-x86-64.so" 로 프로그램을 실행 한다. 상세 사용법 1. compile 환경과 다른 환경에서 프로그램을 실행 합니다. - 그러면 어떠한 라이브러리가 없다고 ..

[time] Linux - UTC vs Unix Time vs Local time의 차이

1. UTC(Universal Time, Coordinated) 1) 정의 - 세슘 원자 진동수 기반의 표준시, 협정 세계시 - GMT가 조금씩 늦어지는 지구 자전의 영향을 받기 때문에 새로 재정된 표준시입니다. 2) UTC와 비교되는 GMT(Greenwich Mean TIme)란? - GMT 런던 외곽에 있는 그리니치 천문대를 기준으로 하는 평균 태양시로, 그리니치 표준시라고 부릅니다. 그리니치 천문대가 경도 0에 위치해 있기 때문에 이를 기준으로 한 것인데, 1925년 2월 5일부터 1972년 1월 1일 까지 세계 표준시로 사용되었습니다. 3) UTC와 GMT 차이점 - UTC와 GMT는 초의 소숫점 단위에서만 차이가 납니다. 2. Unix Time (=Epoch Time) 1) 정의 - UTC 시간..

[tmux] 1. tmux 개념 및 설치 및 설정 변경 ~/.tmux.conf

tmux 란? - 개발시 화면을 전환 및 분활을 쉽게하여 개발을 편하게 해주는 도구 입니다. - 세션 기반의 프로램으로써 background로 프로그램을 동작 시키고 다른 것을 할수 있게 해줍니다. tmux 버전 - tmux.32tmux next-3.2 설치 1. CentOS Linux release 7.6.1810 (Core) 기준 #git clone https://github.com/tmux/tmux.git #cd tmux #./autogen.sh * 연관 라이브러리 설치 - 대체로 libevent-devel 과 ncurses-devel 이 없어 미리 설치 #yum -y install libevent-devel #yum install ncurses-devel #./configure - 없는 라이브러 ..

[Multi thread] Multi thread 에서 localtime 문제

1. 목표 multi thread에서 시간을 관리하는 방법을 알아 보겠습니다. 꼭 C++에 만 해당되는 내용은 아닙니다. C library를 사용한다면 발생 합니다. 2. multi thread에서의 시간 함수 사용시 주의해야 할 사항 multi thread 환경에서 gmtime() 함수와 localtime() 함수를 같이 사용하면 시간 값에서 충돌이 발생 합니다. 왜냐하면 내부적으로 gmtime과 localtime는 같은 시간 변수를 공유 하기 때문에 문제가 발생 합니다. 이걸 방지 하기위해서 C Library에서는gtime_r() 과 localtime_r()을 제공 합니다. 이 함수들은 내부적으로 "시간 변수" 서로 유 하지 않습니다. 1) 증명 (1) 코드 #include #include int m..

[Linux Tip] 리눅스 꿀 Tip 모음

1. grep을 이용한 특정 파일의 내용 앞 뒤로 보기 1) grep만 사용 grep -B 라인수 -A 라인수 [찾을 단어][찾을 파일] (-B: before , -A: after) Ex)#grep -B 10 -A A test test.log 2) pipe( | )를 이용한 grep 사용 화면에서 출력 가능한 각종 리눅스 명령 | grep -B 라인수 -A 라인수 [찾을 파일] (-B: before , -A: after) Ex)#cat test.log | grep -B 10 -A 10 test #svn log | grep -B 10 -A 10 bugfix101