전체 글

전체 글

    Linux Kernel version 체크 프로그램

    Linux Kernel version 체크 프로그램

    간혹 리눅스 버전에 맞춰서 프로그래밍을 해야 할 때가 있다. 리눅스 버전이 올라가면서 구조체가 바뀌었을 때 같은 코드로는 동작하기 어렵다. 그래서 리눅스 verison을 체크해서 컴파일하는 방법을 사용한다 아래는 Test 예제이다.LINUX_VERSION_CODE 와 KERNEL_VERSION(x,y,z) 매크로는 linux/version.h에 존재 하는데 내용은 다음과 같다. #define LINUX_VERSION_CODE 132631 #define KERNEL_VERSION(a,b,c) (((a)

    fork

    fork

    fork를 이용하여 프로세스를 생성하면 프로세스 생성 전까지의 프로세스 상태도 자식 프로세스로 모두 전달된다. 전달되는 상태는 프로그램 코드, 변수 값, 레지스터 설정 값 등 복사되어 전달되고, 부모와 자식은 fork가 수행된 후 부터 나머지 코드를 수행하게 된다. 따라서 위에서 반복문을 이용하여 i란 변수 하나를 부모와 자식 프로세스에서 변수값을 변경하게 된다. 결과를 보면 부모와 자식은 전혀 어떠한 관계도 없이 따로 변수 값이 변함을 알 수 있다. 즉 fork에 의해 생성된 자식 프로세스는 부모를 그대로 복사하여 새로 생성된 pid만 다른 프로세스라고 생각 하면 된다.

    프로세스 생성과 종료

    프로세스 생성과 종료

    fork 함수를 이용하여 자식 프로세스를 생성하고, 부모와 자식이 반복문을 이용하여 1씩 증가시키면서 출력하는 결과물을 확인하는 코드. fork의 반환값이 0 이하이면 프로세스 생성 실패이고, 반환 주소값이 0이라면 자식프로세스 그외 0이상이면 부모 프로세스이다. 따라서 조건문을 이용하여 부모와 자식프로세스의 일을 나누고, 수행하면 아래와 같은 결과가 나온다.

    이진트리 순회

    //================================================//Pre_Order_Traversal//입력 인자 : 루트노드//반환 인자 : 없음//트리 전위 순회//================================================void Pre_Order_Traversal(BTNode *pRoot){ if(pRoot!=NULL) { printf("%d\t", pRoot->data); Pre_Order_Traversal(pRoot->pLeft_Child); Pre_Order_Traversal(pRoot->pRight_Child); } } //================================================//In_Order_Trave..

    cscope & ctags 사용법

    1. ctags 란 ? = > ctags는 프로그래밍 소스 코드의 태그 (전역변수 선언, 함수 정의, 메크로 정의)들의 데이터 베이스(tags파일)을 생성하는 명령어입니다. 커널 소스 분석등 작업에서 탁월한 성능을 발휘합니다 2. ctags 버전 확인하기 = > (쉘에서) $ctags --version 이라고 입력한다 설치 돼어 있는경우 버전 정보가 나옵니다 cannat commond find => 깔려 있지 않을시 에러 출력 ( 대부분 기본리눅스에서 디폴트로 깔려 있지 않을것이다 처음 설치시 전체 설치 또는.. 선택 설치로 ctags를 설치 한경우라면 몰라도 디폴트로는 거의 안깔려 있습니다. 특히 ubuntu 의 경우 원래 데스크탑용으로 개발 돼고 있어서.. 개발 툴이 하나도 안깔려 있기 때문에 별또 ..

    tar, tgz, Z 압축 및 해제하기

    리눅스에서 사용하는 파일의 압축은 보통 파일 확장자가 tar, gz, bz2 입니다. 1. tar 압축 및 풀기 #파일 압축하기 shop 라는 폴더를 A.tar로 압축할때 → tar cvf A.tar shop → A.tar A.tar 를 다시 압축할때 → gzip A.tar → A.tar.gz tar cvf shop.tar shop 2. 분할 압축 tar zcvf - [압축대상] | split ?b [용량지정] - [압축파일].tar.gz - 앞에 띄어 쓰기가 중요합니다. 용량은 다양한 단위를 가질 수 있습니다. 512 를 지정했다면 512 byte, 1k를 지정했다면 1KB, 1m를 지정했다면 1MB 단위로 이해하면 됩니다. 그러면 [압축파일].tar.gzaa, [압축파일].tar.gzab, [압축파일..