1. 파일 디스크립터란?
- 파일 디스크립터(File Descriptor)는 Unix/Linux 시스템에서 프로세스가 파일을 다룰 때 사용하는 추상화된 식별자입니다.
- 간단히 말해서, 프로세스가 특정 파일에 접근할 때 사용하는 참조 번호라고 생각하면 됩니다.
- 실제로는 음수가 아닌 정수값(0, 1, 2, ...)으로 표현됩니다.
1.1 기본 개념 이해하기
- 프로세스가 파일을 열면 운영체제는 해당 파일에 대한 파일 디스크립터를 할당합니다.
- 이후 프로세스는 이 번호를 통해 파일을 읽거나 쓰는 등의 작업을 수행할 수 있습니다.
- 파일 디스크립터는 프로세스별로 고유합니다. 즉, 서로 다른 프로세스의 같은 번호는 다른 파일을 가리킬 수 있습니다.
팁
실제 파일 시스템의 파일뿐만 아니라, 파이프, 소켓, 장치 등 모든 입출력 리소스도 파일 디스크립터로 다룰 수 있습니다. 이것이 유닉스의 "모든 것은 파일이다"라는 철학의 실제 구현입니다.
2. 표준 파일 디스크립터
- 모든 프로세스는 기본적으로 세 개의 표준 파일 디스크립터를 가집니다:
- 0 (STDIN_FILENO): 표준 입력
- 기본적으로 키보드 입력을 나타냅니다
- C의
stdin
에 해당
- 1 (STDOUT_FILENO): 표준 출력
- 기본적으로 콘솔 화면을 나타냅니다
- C의
stdout
에 해당
- 2 (STDERR_FILENO): 표준 에러
- 에러 메시지 출력을 위한 스트림입니다
- C의
stderr
에 해당