프로세스
fd = open(path, flags)
정수 핸들을 받고 이후 연산은 fd로 요청한다.
read / write / lseek
현재 파일 포인터를 기준으로 데이터 위치가 결정된다.
파일 디스크립터는 프로세스와 커널의 열린 파일 테이블을 잇고, 커널은 파일 포인터·모드·참조 수·잠금 상태를 관리한다.
close가 빠지면 열린 파일 카운트가 줄지 않아 fd 누수가 생긴다. 서버에서는 결국 open 실패로 이어질 수 있다.