FD Table

파일 디스크립터 핸들

fd 3은 파일 자체가 아니라 프로세스 테이블의 작은 정수 인덱스다. 그 뒤에는 open file description과 inode, file offset, flags가 연결된다.

01

프로세스별 번호 탐색

read(3, ...)의 3은 현재 프로세스 fd table index다.

02

공유 offset 확인

dup이나 fork 뒤 두 fd가 같은 open file description을 가리키면 file offset도 공유된다.

03

close 시점 관리

fd를 닫지 않으면 파일, pipe, socket 자원이 남고 EOF 전달도 지연될 수 있다.

fd
작은 정수 핸들 프로세스마다 같은 숫자가 다른 파일을 가리킬 수 있다.
0,1,2는 표준 입출력 관례다.
offset
읽기/쓰기 위치 open file description에 속해 공유될 수 있다.
pread/pwrite는 offset을 명시한다.
flags
열기 상태 O_APPEND, O_NONBLOCK 같은 flag가 I/O 의미를 바꾼다.
descriptor flag와 status flag를 구분한다.
inode
파일 정체성 경로 이름이 아니라 파일 시스템 안의 객체를 나타낸다.
unlink 후에도 열린 fd는 남을 수 있다.

공유 · close · 경로 점검

공유 dup과 fork 뒤 offset 공유 여부를 설명할 수 있는가.
close pipe에서 EOF를 전달하려면 어떤 fd를 닫아야 하는가.
경로 파일을 unlink해도 열린 fd로 접근 가능한 이유를 이해하는가.

FD 계층

process fd table[3] -> open file description(offset, flags) -> inode -> disk blocks