42SEOUL

[C / get_next_line] 파일 디스크립터 (File Descriptor)

daykim 2022. 3. 16. 17:31

파일 디스크립터 (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