시냅스

C언어 fd : 파일 디스크립터 (File Descriptor) 본문

C

C언어 fd : 파일 디스크립터 (File Descriptor)

ted k 2022. 3. 26. 01:16

파일 디스크립터 (File Descriptor)

Unix OS에서 모든 것은 파일로 관리되는데 이러한 파일에 접근할 때 파일 디스크립터 라는 개념을 이용한다.

파일은 일반적인 정규 파일, 디렉토리, 소켓, 파이프, 블록 디바이스, 캐릭터 등등 모든 객체들을 파일이라 칭한다.

 

0을 포함한 양수인 정수만을 값으로 하고,

 

  • 0 : 표준 입력 (Standard Input, STDIN_FILENO)
  • 1 : 표준 출력 (Standard Output, STDOUT_FILENO)
  • 2 : 표준 에러 (Standard Error, STDERR_FILENO)

를 기본적으로 할당 받는다.

 

출처 : https://en.wikipedia.org/wiki/File_descriptor

 

FD는 숫자로, FD 테이블의 인덱스를 의미하기 때문에

FD가 3으로 반환됐을 경우, File Descriptors table에 3번 항목이 가리키는 파일이라고 생각할 수 있다.

 

FD table은 프로세스 단위로 할당되어 각 프로세스는 저마다의 FD table을 가지고 있는데,

FD table의 각 칸들은 FD flag와 pointer 를 가지고 있어,

파일을 참조할 수 있고,modeinode table pointer 의 Offset 을 가지고 있다.

inode table 은 소유자 그룹, 접근 모드(읽기, 쓰기, 실행 권한), 파일 형태, 아이 노드 숫자 등 파일에 관한 정보를 갖고 있다.

 

inode는 파일을 기술하는 디스크 상의 데이터 구조

파일의 데이터 블록이 디스크 상의 어느 주소에 있는 가와 같은 정보를 갖고 있고,

각각의 Inode는 고유 번호(inode number)를 가지고 있어 파일을 식별할 때 사용한다.

ls -i # inode number

 

Comments