1. 파일 입출력 구분
ㅇ 저수준 파일처리 (Low Level File Handling) : 파일 기술자(File Descriptor)
- 번호에 의해 파일 입출력을 함
ㅇ 고수준 파일처리 (High Level File Handling) : 파일 포인터(File Pointer)
- FILE 구조체에 의해 파일 입출력을 함
2. 저수준 파일처리 (Low Level File Handling)
ㅇ 파일 기술자(File Descriptor)에 의해 처리
- 음이 아닌 정수로된 번호에 의해 파일 입출력을 함 (유닉스 등 운영체제 지원)
. 다소 비 직관적인 함수 형태를 사용
- 이를, 때로는 버퍼링 없는 파일 입출력(Unbuffered File I/O) 이라고도 함
. 프로그래머가 버퍼 크기를 일일이 지정해주어야 함
ㅇ 例) open(), write() 등 ☞ 저수준 파일 입출력 참조
- 파일 사용 준비 및 파일기술자 만들기 함수
3. 고수준 파일처리 (High Level File Handling)
ㅇ 파일 포인터(File Pointer)에 의해 처리
- FILE 구조체에 의해 파일 입출력을 함 (표준 C 언어를 지원하는 모든 운영체제 지원)
. C 언어 표준인 추상화된 FILE 구조체 사용
.. 표준 입출력 라이브러리(Standard I/O Library)로써,
.. 파일에 파일 스트림을 연관시키는 C 언어 라이브러리 (stdio.h)에 선언되어있음
#include <stdio.h>
FILE * fopen (const char *path, const char *mode);
. 직관적이고 사용이 편리한 함수 형태를 제공
- 이를, 때로는 버퍼링 있는 파일 입출력(Buffered File I/O) 이라고도 함
. 프로그래머가 버퍼 크기를 일일이 지정해주지 않아도 되며,
. 줄 단위 처리 등이 용이
ㅇ 例) fopen(), fclose(), fprintf() 등 ☞ 고수준 파일 입출력 참조
4. Unix/Linux 파일 I/O (입출력)
ㅇ 열려있는 화일에 파일기술자/파일포인터를 통한 참조로 입출력 수행
ㅇ I/O 시스템 호출에서는,
- 파이프,FIFO,소켓,터미널,장치 등 모든 열려있는 장치 파일을 참조할 때 파일기술자를 씀
ㅇ 파일 I/O를 위한 버퍼 캐시 사용
- 서로다른 속도의 디스크 저장장치,메모리 등에 읽기쓰기를 곧바로 수행하지 않고,
반드시 버퍼를 통해서 만 접근함
※ Unix/Linux에서 거의 모든 것이 화일로 처리됨 ☞ Unix/Linux 파일 처리 참조
- 즉, `디스크 화일,직렬 포트,프린터 등`과 `화일`을 사용할 때 똑같은 방법 사용
- 결국, 디바이스,디렉토리,네임드파이프,소켓 등에서 입출력이 파일로 취급됨