파일 디스크립터 (File Descriptor)
리눅스 혹은 유닉스 계열 시스템에서 프로세스가 파일을 다룰 때 사용하는 개념으로 프로세스에서 특정 파일에 접근할 때 사용하는 추상적인 값
- 파일에 빨리 접근할 수 있도록 도와주는 파일의 별명같은 것이다.
- 일반적으로 0과 양수인 정수값을 갖는다.
- 유닉스 시스템에서 모든 객체들을 파일이라고 한다. ( 디렉토리, 소켓, 파이프 등 모든것이 하나의 파일)
- 유닉스 시스템에서 이 객체들에 접근할 때 파일 디스크립터를 사용한다.
- 응용 프로세스가 파일을 열거나 생성시 파일 디스크립터를 얻게 된다.
- 얻게된 파일 디스크립터는 이후 일어나는 모든 동작(읽기, 쓰기, 파일 동작 제어 등)에서 그 파일을 가리키는데 사용된다.
- 파일을 open()시 file discriptor를 반환받는데 이 파일 디스크립터는 description을 가리킨다.
- 이 description은 오프셋이나 파일의 상태플래그(O_RDONLY, O_WRONLY, O_RDWR 등)를 담고있다.
- read()함수 사용시 읽은 만큼 이 오프셋 값을 이동시켜 매 호출마다 처음부터 읽지 않게 해준다.
기본적으로 할당되는 파일 디스크립터
0 | 표준 입력 |
1 | 표준 출력 |
2 | 표준 에러 |
따라서 우리가 생성하는 파일 디스크립터들은 3번부터 차례대로 할당받게 된다.
파일 디스크립터 범위
일반적으로 0 ~ OPEN_MAX까지 둘 수 있다.
OPEN_MAX 값은 매크로 값으로 코드가 실행되는 환경에 따라 다르다.
이는 limits.h에서 확인 가능하다.
'42SEOUL' 카테고리의 다른 글
[ft_printf] printf() (0) | 2022.04.22 |
---|---|
[Linux] SIGSEGV (0) | 2022.03.26 |
[C / get_next_line] 정적 변수 (static variable) (0) | 2022.03.16 |
[C / Libft] 컴파일 과정 (0) | 2022.03.09 |
[C] File 종류와 함수 (0) | 2022.03.08 |