본문 바로가기

프로그래밍27

[리눅스/Linux] 컴파일을 위한 Makefile 간단 예제 - 여러개의 파일 지난 포스팅에서 아주 간단한 Makefile 예제를 소개했습니다. 간단 예제의 Makefile 을 조금씩만 손 보면 원하는 형태의 프로그램을 간편하게 컴파일할 수 있습니다. 한 번만 만들어놓으면 코드 수정 후 make 명령만 실행하면 알아서 컴파일 하고 실행 파일까지 만들어주니 리눅스 환경에서는 거의 필수로 생각해도 됩니다. Makefile 관련 포스팅 [리눅스] 컴파일을 위한 Makefile - 간단 예제 simple example 여러 개의 파일을 컴파일하는 Makefile 예제 이번에는 여러 개의 파일을 컴파일하는 Makefile 을 소개하도록 하겠습니다. 우선 컴파일을 수행할 프로그램 코드를 만들어줍니다. 지난 시간에 만들었던 test.c 를 그대로 이용하고 약간 확장해서 korea.c, worl.. 2020. 12. 3.
[프로그래밍] ASCII table, 아스키 코드표 컴퓨터의 언어 - ASCII 코드 ASCII는 정보 교환을 위한 미국 표준 코드를 나타냅니다. 컴퓨터는 숫자만 이해할 수 있으므로 ASCII 코드는 'a' 또는 '@'와 같은 문자 또는 특수문자 등을 컴퓨터가 알아볼 수 있는 숫자로 표현한 것입니다. ASCII는 오래 전에 개발되었으며 현재 사용되지 않는 문자는 초기에 만들어진 용도로 거의 사용되지 않습니다. 아래는 ASCII 문자 테이블이며 0~32번까지 처음 32개의 문자는 현재는 사용되지 않습니다. ASCII는 실제로 텔레타이프와 함께 사용하도록 설계되었으므로 설명이 다소 모호합니다. Notepad.exe 에서 ASCII 텍스트를 생성하거나 MS Word에서 파일을 '텍스트 전용'으로 저장하는 것이 바로 ASCII 형식으로 저장하는 것입니다. 0x0.. 2020. 12. 3.
[리눅스] 컴파일을 위한 Makefile - 간단 예제 simple example linux 에서 C언어 컴파일 Hello World 란 문자를 출력하는 test.c 파일을 생성합니다. test.c #include void main (void) { printf ("hello world!\n"); return; } 이 파일을 실행하기 위해서는 우선 파일을 컴파일하고 결과로 나온 오브젝트 파일을 묶어서 실행파일을 만들어야 합니니다. gcc 명령을 이용해서 한다면 다음과 같습니다. 간단한 Makefile 예제 위에 예제로 사용한 test.c 파일을 컴파일하는 Makefile 입니다. ㅠㅠ 복잡해보입니다. 간단한 test.c 파일 하나 컴파일하는데 Makefile 양이 더 많네요..ㅎㅎ 하지만 프로그램을 만들다보면 소스파일도 많아지고, 라이브러리도 가져다쓰고 하게되는데 이럴 때는 Makefi.. 2020. 12. 2.
[리눅스] linux 에서 listen하고 있는 port 확인하는 4가지 방법 리눅스에서 데몬 혹은 어플리케이션이 listen 하고 있는 port 를 확인하는 방법에 대해 알아보겠습니다. (참고) port 의 상태는 open, filtered, closed, unfiltered 가 있습니다. 1. Netstat Netstat 는 Linux 네트워킹 시스템에 대한 정보를 확인하는데 사용되는 도구입니다. 아래와 같이 open되어있는 모든 port를 확인하는데 사용할 수 있습니다. -l 옵션 : netstat에 모든 수신 소켓을 표시한다. -t 옵션 : 모든 TCP 연결을 표시한다. -u 옵션 : 모든 UDP 연결을 표시한다. -p 옵션 : 포트에서 수신하는 어플리케이션/데몬의 이름을 표시한다. -n 옵션 : 서비스 이름 대신 port 번호를 표시한다. sudo netstat -ltup.. 2020. 11. 30.
[리눅스] sftp 자동화 스크립트 - sshpass sftp 명령어는 리눅스 환경에서 파일 전송용으로 자주 사용되고 있습니다. 파일 전송이 자주 있는 경우에는 script 를 사용해서 자동하여 사용하는 방법이 실수도 줄일 수 있고 아주 간편하게 사용할 수 있는 장점이 있습니다. sshpass 를 이용하여 sftp 파일전송 script 를 만들어보도록 하겠습니다. sftp 자동화 스크립트 간단 예제 아래 script 는 10.200.3.3 서버에 jungfo 라는 ID 로 접속하여 test_files.txt 를 다운받는 간단한 예제입니다. 실행 결과 - test_file.txt 를 전송받음. sftp 자동화 스크립트 예제1 - 파일명 인자로 전달하기 간단 예제에 파일명을 파라미터로 입력받는 부분을 추가했습니다. 이제 script 뒤에 원하는 파일명을 입력하.. 2020. 11. 30.
[리눅스] sshpass download 및 install sftp 나 ssh 기반의 명령어를 사용할 때 password 를 항상 입력해야하는 것이 번거로울 수 있습니다. sshpass 는 파라미터나 파일을 통해 입력받은 암호를 이용하여 쉽게 ssh 를 연결할 수 있고, 응용한다면 batch 파일이나 script 를 통해 다음 명령어도 수행할 수 있습니다. ssh 기반 명령어의 자동화에 아주 유용합니다. 이번 포스팅은 sshpass 명령이 없는 경우 source 코드를 다운받아서 설치하는 과정을 간단하게 설명드리겠습니다. sshpass download 사이트 sourceforge.net/projects/sshpass/ Non-interactive ssh password auth Download Non-interactive ssh password auth for .. 2020. 11. 30.
[리눅스] hostname, 호스트명 변경 방법 리눅스 머신은 각각의 구분을 쉽게하기 위하여 호스트명을 사용합니다. 보통은 리눅스 설치 시에 설정하게 되는데 설치 후 hostname 을 변경하는 법을 알아보겠습니다. * 현재 hostname 확인 - hostname hostname 명령을 이용하여 현재 hostname 이 "jungfo-X10SRA-F" 로 설정된 것을 확인. * 원하는 hostname 으로 변경 - hostname [호스트명] hostname jungfo 명령을 이용하여 호스트명을 "jungfo" 로 변경. * /etc/hostname 파일 변경 - vi /etc/hostname 바뀐 호스트명은 reboot 후에는 다시 원복될 수 있으므로 /etc/hostname 파일을 수정. 이렇게 수정해 주면 reboot 후에도 설정한 hostn.. 2020. 11. 27.
[리눅스] hostname 오류 "unable to resolve host" 해결 방법 unable to resolve host 리눅스에서 관리자 권한을 필요로 할 때 sudo 명령을 사용합니다. sudo 명령을 이용해서 root 로 권한으로 명령어를 수행할 때 가끔 "unable to resolve host jungfo" 이란 오류가 발생하는 경우가 있습니다. 보통은 hostname 을 변경한 경우에 많이 발생하는데 해결 방법은 의외로 간단합니다. 현재 설정된 호스트명을 확인 - cat /etc/hosts 역시 호스트명 리스트에 제가 사용하는 hostname 이 없네요. 간단하게 저의 hostname 만 추가해주면 됩니다. 호스트명 추가 - vi /etc/hosts /etc/hosts 파일을 열어서 "127.0.0.1 localhost" 부분을 복사해서 한 줄 추가하고 "localhost.. 2020. 11. 27.
[C언어] 시간 차이 구하는 방법 - difftime 간단 예제 시간 차이 구하는 간단 예제 사용하는 API 는 아래와 같습니다. difftime() double difftime(time_t time2, time_t time1); - 인자로 받은 두 시간의 차이를 구해 return한다. mktime() time_t mktime(struct tm* timeptr); - 인자로 받은 tm struct 를 time_t 형으로 변환한다. strftime() - debug print 용으로 사용. size_t strftime(char *s, size_t maxsize, const char *format, const struct tm * timeptr); - tm struct 로 포맷화 된 문자열을 만드는 함수. [C언어] time 사용법 - 시간 출력 포맷, 시간 / 문자열 .. 2020. 11. 16.
[C언어] time 사용법 - 시간 출력 포맷, 시간 / 문자열 변환 시간 출력 (년월일, 시분초) 시간 출력에 관련한 simple example 을 공유합니다. 예제에 사용된 함수는 아래와 같습니다. time() time_t time(time_t *timeptr) - 인자에 NULL 을 넘길 경우, 현재까지의 시간을 초 단위로 반환함. localtime() struct tm *localtime(const time_t *timeval); - 초 단위 시간을 tm struct 에 담아서 반환. (년월일시분초 포맷화) strptime() char *strptime(const char *s, const char *format, struct tm *tm); - 시간 문자열을 tm struct 로 변환하는 함수. strftime() size_t strftime(char *s, si.. 2020. 11. 16.
[svn 오류] svn cleanup 오류 발생 시 해결방법 svn 을 사용하다보면 예상하지 않는 오류가 발생하는 경우가 있습니다. 그럴 때 자주 사용하는 명령어가 바로 svn cleanup 인데, svn cleanup 조차 제대로 실행되지 않는 경우가 발생할 수 있습니다. 보통은 하기와 같은 오류 메시지와 함께 cleanup 에 실패합니다. Failed to run the WC DB work queue associated with file 위와 같은 오류 메시지가 보인다면 하기와 같은 명령으로 오류를 해결할 수 있습니다. cd {work-dir-base} // .svn 디렉토리가 존재하는 위치로 이동. sqlite3 .svn/wc.db "delete from work_queue" 위 명령으로 svn cleanup 이 정상적으로 되었다면 이제 원래 디렉토리로 돌아.. 2020. 11. 4.
[네트워크/명령어] iptables 패킷 카운트 초기화 간단 사용법 / 예제 linux 환경에서 방화벽이나 NAT 를 운영할 때 가장 많이 쓰이는 명령어가 바로 iptables 입니다. 어떤 특정 packet 들이 방화벽의 어떤 rule 에 막히는지 혹은 어떤 rule 에 의해 drop 되는지 등의 debugging 을 할 때 iptables 패킷 카운트 초기화 명령이 유용하게 쓰일 수 있습니다. iptables 의 상태 확인 명령어 - iptables -L FORWARD -nv -t filter filter table 의 FORWARD chain 을 보여줍니다. 현재 input table 의 최상된 rule 에 의해 accept 된 packet count 가 275개 인 것으로 보여지네요. 이 packet count 를 통해 현재 iptables rule (방화벽/NAT 등) .. 2020. 10. 30.