시스템으로 부터 할당받은 파일이나 소켓을 대표하는 정수 값.
FD | name |
---|---|
0 | Standard Input |
1 | Standard Output |
2 | Standard Error |
이미 존재하는 파일을 열거나, 새로운 파일을 생성하는 System call 함수
open (pathname, flags, mode)
fd 로부터 데이터를 읽는다.
파일을 읽으면 읽은 size만큼 파일의 다음 읽을 위치가 이동
된다.
파일의 끝에 도달하면 더이상 읽을 데이터가 없으니 0을 리턴한다.
read (fd, buf, count)
return > 0 : 읽은 byte수, 일반적으로 count와 같은 값이지만, EOF에 도달하였거나, 다른상황에서는 count와 다른 값일수 있다.
return -1 : 에러
return 0 : end of file에 도달하여 더이상 읽을 데이터가 없는 경우.
open한 파일 디스크립터를 닫는다.
close (int fd)
return 0 : 정상적으로 파일을 닫은 경우
return -1 : 에러
메모리 공간은 코드영역, 데이터영역, 힙영역, 스택 영역으로 나누어져 있다.
code 영역 : 실행할 프로그램의 코드가 저장되는 영역.프로그램이 시작하고 종료될 때 까지 메모리에 계속 남아있는다.
data 영역 : 프로그램의 전역(global)변수와 정적(static)변수가 저장되는 영역이다. 프로그램의 시작과 함께 할당, 프로그램 종료 시 소멸.
heap 영역 : 프로그래머가 직접 공간을 할당, 해제하는 메모리 공간. malloc()을 통해 메모리를 할당, free()를 통하여 메모리를 해제. heap은 FIFO(First In, First Out)의 방식으로 먼저 들어온 데이터가 가장 먼저 인출된다. 위에서 부터 아래 방향으로 데이터가 쌓인다.
stack 영역 : 프로그램이 자동으로 사용하는 임시 메모리 영역. 함수 호출시 생성되는 지역변수와 매개변수가 저장되고, 완료되면 사라진다. stack은 LIFO(Last In, First Out)의 방식으로 가장 마지막에 들어온 데이터가 가장 먼저 인출된다. 아래에서부터 위의 방향으로 데이터가 쌓인다.
Stack Oveflow, Heap Underflow
c언어에서의 기본적인 변수는 동적(dynamic)변수로, 변수 선언과 동시에 메모리할당, 변수 사용이 끝남과 동시에 메모리가해제된다.
Static 변수는 data 영역에 저장된다. 프로그램 시작과 함께 할당되며, 프로그램이 종료되기 전에 메모리 해제가 되지 않는다.