'프로그래밍/Linux' 카테고리의 글 목록 — 매일을 꿈틀대는 법

프로그래밍/Linux

프로그래밍/Linux

[Linux]프로세스 처리

학교 강의를 복습하는 차원에서 작성하는 글입니다. 학부생 수준의 글이므로, 오류가 있을 수 있는 점 양해바람니다. Process Process는 실행 중인 상태의 프로그램을 말하며, 동일한 프로그램으로 여러 개의 프로세스를 만들 수 있고. 각 프로세스는 프로그램의 Instance(메모리에 할당된 객체)라고 볼 수 있다. *프로그램은 명령어 코드를 담고 있는 파일을 말한다. * 프로그램 on DISK => (프로그램 실행) => Process on Memory(RAM) 사용자는 Shell Prompt 상에서 Program을 지정해 실행해 프로세스를 생성하거나 실행 중인 User Process가 Program을 실행하는 방식으로 프로세스를 생성한다. 두 가지 방법은 사실 동일한데. Shell Prompt를 ..

프로그래밍/Linux

[Linux]파일입출력(3)

학교 강의를 복습하는 차원에서 작성하는 글입니다. 학부생 수준의 글이므로, 오류가 있을 수 있는 점 양해바람니다. unlink, remove pathname으로 지정한 파일 삭제 비어 있는 디렉터리는 remove만 사용 가능 비어 있지 않은 디렉터리는 삭제 불가 #include int unlink(const char * pathname); #include int remove(const char * pathname); // pathname => 삭제할 파일의 경로 이름 // return => 작업이 성공시 0 반환, 실패시 -1 반환 chmod, fchmod chmod는 개방하지 않은 파일을 경로명으로 지정 fchmod는 개방한 파일을 파일 기술자로 지정한다. #include #include int chm..

프로그래밍/Linux

[Linux]파일입출력(2)

학교 강의를 복습하는 차원에서 작성하는 글입니다. 학부생 수준의 글이므로, 오류가 있을 수 있는 점 양해바람니다. Read read는 file descriptor로 지정한 파일에서 데이터를 읽는다. #include ssize_t read(int filedes, void * buf, size_t count); filedes 읽기 작업을 수행할 파일에 대한 기술자 => 숫자를 넣어준다. open 으로 오면, 0을 넣어준다. buf 파일로부터 읽어 들인 내용을 저장하기 위한 공간 일반적으로 배열을 사용하게 되는데 배열의 데이터 형식은 어느 것이라도 상관없음 => char dat[100]; int dat[25]; char = malloc[100]; count 읽어들일 파일 내용의 크기를 지정. 바이트 단위 반환..

프로그래밍/Linux

[Linux]파일입출력(1)

학교 강의를 복습하는 차원에서 작성하는 글입니다. 학부생 수준의 글이므로, 오류가 있을 수 있는 점 양해바람니다. System Call, Standard Library Function 사용자가 작성한 프로그램이 Kernel이 제공하는 서비스를 사용 => 함수 호출 -> Library 내부에서 SW interrupt 생성 -> Linux Kernel Interrupt Handler 호출 -> Linux Kernel 안에서 처리 -> Library에서 받아 함수로 전달 표준 라이브러리 함수 open 이미 존재하는 파일을 읽기 또는 쓰기용으로 열거나, 새로운 파일을 생성하여 연다. close open 으로 알려진 파일을 닫는다. read 열려진 파일로부터 데이터를 읽어들인다. write 열려진 파일에 데이터를..

프로그래밍/Linux

[Linux]파일시스템

학교 강의를 복습하는 차원에서 작성하는 글입니다. 학부생 수준의 글이므로, 오류가 있을 수 있는 점 양해바람니다. Disk Block 단위로 data를 읽거나 쓴다. 거대한 저장 공간을 나누어서 쓰기 위해서, File 이라는 데이터 묶음을 만들고. 여러 file을 모아서 저장할 수 있는 Directory 같은 것도 만든다. 이때, 이러한 거대한 저장 공간을 나누기 위한 규칙이 파일시스템이다. File 데이터 저장하기 위한 가장 기본 단위 Linux에서 FIle은 단순히 Binary Data를 저장한다. => 저장된 Data는 논리적인 구조가 아니다. Ex) cat > data ACD => Text file이면 A C D 와 \n 문자를 저장하고 있고 => Binary file이면 숫자형인 65 67 68..

프로그래밍/Linux

[Linux]Debug

학교 강의를 복습하는 차원에서 작성하는 글입니다. 학부생 수준의 글이므로, 오류가 있을 수 있는 점 양해바람니다. Debug GNU gdb 소스 코드의 명령어들을 한 라인씩 처리하면서 실행되는 과정을 확인할 수 있는 도구 gdb를 쉽게 사용하기 위해 gcc 컴파일시 반드시 -g 옵션 사용 => gcc -g -o a.out test.c gdb 실행 gdb filename gdb -p [pid] 보안을 위해 gdb로 디버깅 후 strip -d [filename]을 통해 디버깅 정보를 제거해주어야 한다. 디버그 명령어 help 도움 명령어 print 변수 값 변수 값 출력 break 해당 위치에서 일시 중지 start 첫번째 줄 실행 시작 step, s 현재 줄 실행 (function 안으로 진입) next,..

프로그래밍/Linux

[Linux]컴파일 make

학교 강의를 복습하는 차원에서 작성하는 글입니다. 학부생 수준의 글이므로, 오류가 있을 수 있는 점 양해바람니다. 자동 컴파일 make 유틸리티 증분 컴파일로, 프로그램 그룹 중에서 어느 부분이 컴파일 되어야 하는 지를 자동으로 판단한다. 필요한 커맨드를 이용 재 컴파일 및 링크한다. 즉 makefile 이란 하나의 실행 파일을 작성하기 위해서 관련된 소스 코드 파일들을 컴파일하고 링크하는 순서를 정의하 고 있는 텍스트 형식의 파일이다. 컴파일시 간단히 'make' 명령을 통해 수행한다. 기본 Makefile 구문 target : prerequisite [TAB] command target command가 수행되어 나온 결과물 대부분 목적 파일이나 실행 파일이나. make clean 같은 간단한 레이블 ..

프로그래밍/Linux

[Linux]리눅스 컴파일

학교 강의를 복습하는 차원에서 작성하는 글입니다. 학부생 수준의 글이므로, 오류가 있을 수 있는 점 양해바람니다. 기존 프로그래밍 환경 통합개발환경 IDE 에디터 + 빌더 (= 컴파일러 + 링커) + 디버거 에디터 소스 코드를 편집하는 용도로 사용 컴파일러 소스 코드를 바이너리 코드로 변경한다. 리눅스 시스템에서는 gcc를 사용한다. 링커/로더 목적 파일들을 연결해서 실행 파일을 만든다. 리누긋 시스템에서는 ld를 사용한다. 디버거 한줄씩 실행 / 메모리 추적 등 디버깅에 사용한다. Linux의 프로그래밍 환경 통합개발환경 IDE 에디터 + 빌더 (= 컴파일러 + 링커) + 디버거 에디터는 따로 존재 gedit, xed, vim, vscode ... 컴파일러 gcc (GNU C Compiler -> GN..

호놀률루
'프로그래밍/Linux' 카테고리의 글 목록