fd table

작은 정수 fd가 커널의 열린 파일 상태로 이어진다

프로세스는 fd 번호만 들고 있고, 실제 오프셋과 접근 모드는 커널의 열린 파일 테이블에서 공유될 수 있습니다.

01

fd 3

프로세스별 배열의 인덱스입니다. 표준 입출력 0, 1, 2 뒤에서 시작합니다.

02

open file entry

현재 오프셋, 읽기/쓰기 모드, 참조 카운트가 이 항목에 남습니다.

03

inode / vnode

파일 크기, 권한, 블록 위치 같은 파일 메타데이터를 가리킵니다.

04

disk blocks

파일 시스템이 계산한 실제 블록에서 데이터가 읽히거나 기록됩니다.

공유 여부를 판단하는 지점

  • fork 후 부모와 자식은 같은 열린 파일 엔트리를 공유할 수 있습니다.
  • dup2는 fd 번호만 바꾸므로 같은 오프셋을 보는 상황이 생깁니다.
  • open을 다시 호출하면 같은 inode라도 별도 열린 파일 엔트리가 생깁니다.

실무 확인

lsof 열린 파일과 프로세스
/proc 프로세스별 fd 링크
ulimit fd 개수 제한