포스트

파일 디스크립터 File Descriptor

본 글은 제 개인적인 공부를 위해 작성한 글입니다. 틀린 내용이 있다면 언제든지 피드백을 주시면 감사하겠습니다. 참고로만 활용해주시길 바랍니다.

파일 디스크립터 File Descriptor


파일 디스크립터 File Descriptor란 Unix/Linux 계열의 시스템에서 프로세스(Process)가 파일(File)을 다룰 때 사용하는 개념으로, 프로세스에서 특정 파일에 접근할 때 사용하는 추상적인 값이다.

특정 동작에 대한 수행 자격을 부여하는 핸들 또는 파일 객체를 가리키는 포인터라고 한다.

핸들: 객체나 자원을 가리키는 참조나 식별자

파일 디스크립터는 일반적으로 0이 아닌 정수 값을 가진다.

흔히 유닉스 시스템에서는 모든 것을 파일이라고 한다. 일반적인 정규 파일부터 디렉토리, 소켓, 파이프, I/O 등 모든 객체들을 파일로 관리한다.

유닉스 시스템에서 프로세스가 이 파일들을 접근할 때 파일 디스크립터라는 개념을 사용한다.


프로세스가 실행 중에 파일을 열면, 커널은 해당 프로세스의 파일 디스크립터 숫자 중 사용하지 않는 가장 작은 값을 할당해준다. 그 다음 프로세스가 열려있는 파일에 시스템 콜을 이용해서 접근할 때, 파일 디스크립터(FD) 값을 이용해 파일을 지칭할 수 있다.

기본적으로 할당되는 파일 디스크립터는 아래와 같다.

정수값이름
0표준 입력 (stdin)
1표준 출력 (stdout)
2표준 오류 (stderr)


운영체제는 이 파일 디스크립터를 프로세스 별로 관리하며, 파일 디스크립터는 오픈 파일 테이블을 가리킨다.

오픈 파일 테이블에는 디스크립터가 가리키는 파일현재 오프셋(얼마나 읽었는지), 읽기 쓰기 여부 등을 담고 있다.



참고

이 기사는 저작권자의 CC BY 4.0 라이센스를 따릅니다.