File Descriptor, File Handle   파일 기술자, 파일 지정번호, 파일 핸들, 파일 식별자, 파일 디스크립터

(2024-01-13)

화일 기술자, 화일 지정번호, 화일 핸들, 화일 식별자, stdin, stdout, stderr


1. 파일 입출력 다루기파일 입출력 구분
     - 저수준 파일처리 (Low Level File Handling)   :  파일 기술자 (File Descriptor)
     - 고수준 파일처리 (High Level File Handling)  :  파일 포인터 (File Pointer)

  ㅇ 파일 입출력 참조  :  파일 기술자 (File Descriptor) 또는 파일 핸들 (File Handle)
     - 화일 입출력(I/O) 동작을 위한,
     - 저수준의(Low-level) 인터페이스를 제공하는,
     - 화일 참조용 번호(숫자)를 말함

     * (명칭 유의) 
        . 주로, 유닉스에서는 `파일 기술자`, 윈도우즈에서는 `파일 핸들` 이라고 함


2. 파일 기술자 특징

  ㅇ 모든 열린 파일들은, 파일기술자 번호에 의해 참조됨

  ㅇ 특히, Unix/Linux에서, 모든 파일I/O 시스템호출은, 
     - 반드시, 파일기술자를 통해, 열려있는 파일을 참조함
        . 파일 관리용 시스템호출 : create(), open(), read(), write(), close(), ioctl() 등
        . 열려있는 파일 종류 : (파이프,FIFO,소켓,터미널,장치 파일,일반 파일 등)
        . 파일 기술자 값 범위 : 작은 크기의 정수로써, 0 ~ 255 (1024)
        . 번호 생성 주체 : 커널에 의해 만들어지는 값(번호)

     - 응용 프로그램파일에 접근할 때, 바로 이 파일 기술자를 직접 사용함   ☞ 파일 포인터 참조 

     - 한편, 명령어,프로그램의 입력,출력을 표준 입출력으로 추상화시켜,  ☞ 아래 3.항 참조
        . 실제, 입출력이 어디에 연결되는지 신경쓰지 않고,  
        . 또한, 필요시 자유롭게 지정도 가능


3. 표준 파일 기술자 (Unix/Linux)

  ㅇ 표준 파일 기술자로써 사용되는 주요 정수
     -  0 (표준 입력, stdin,  STDIN_FILENO)
     -  1 (표준 출력, stdout, STDOUT_FILENO)
     -  2 (표준 에러, stderr, STDERR_FILENO) 등 

     * C 언어에서, unistd.h 헤더 파일에 정의되어 있음
       . STDIN_FILENO,STDOUT_FILENO,STDERR_FILENO : POSIX 표준 상의 명칭

  ㅇ 에서의 파일기술자 처리  :  (자동으로 항상 열려짐)
     - 모든 유닉스/리눅스 들은,
     - 위 3개의 파일기술자를 항상 열어놓고,
        . 프로그램이 시작될 때 해당 프로그램에 연결시켜줌
     - 예를들면, 
        . 프로그램이 시작 (프로세스 생성) 때, 이 위 3개를 대신 열어주며, 
        . 프로그램 (프로세스)은 이 만들어둔 3개 화일기술자의 복사본을 물려받음
     - 즉, 은 항상 위 3개를 언제나 열어놓은 상태로 동작함

  ㅇ 위 3개의 파일기술자 이외에는,
     - 별도로, (파일,소켓 등)에 대해, 파일 열기에 의한 생성 과정을 거친 뒤에야, 
     - 비로소, 파일기술자 번호가 할당됨

파일
   1. 파일   2. 파일 I/O   3. 저수준 파일 I/O   4. 파일 기술자   5. 고수준 파일 I/O (파일 포인터)   6. 파일 끝 (EOF)  


"본 웹사이트 내 모든 저작물은 원출처를 밝히는 한 자유롭게 사용(상업화포함) 가능합니다"