유닉스에서 파일을 읽고 쓰는 방식은 저수준 파일 입출력과 고수준 파일 입출력으로 구분할 수 있다.
저수준 파일 입출력
저수준 파일 입출력은 유닉스 커널(시스템에 존재하는 시스템 자원 관리, 메모리 관리, 프로세스 관리, 파일관리, 입출력관리, 프로세스간 상호 통신을 담당)의 시스템을 호출하여 파일입출력을 수행한다. 저수준 파일 입출력은 시스템 호출을 이용하므로 파일에 좀더 빠르게 접근 할 수 있다. 또 바이트 단위로 파일을 다루므로 일반 파일 뿐 아니라 특수 파일(데이터 전송, 장치 접근에 사용하는 파일)도 읽고 작성할 수 있다.
그러나 바이트 단위로만 입출력을 수행하여 이를 이용하여 응용 프로그램을 작성하려면 바이트를 적당한 형태의 데이터로 변환하는 함수등 여러가지 추가적인 기능을 구현해야 함.
파일 지시자는 파일 기술자 int fd를 따른다.
예 ) open, close, read, write ..
고수준 파일 입출력 (표준 입출력 라이브러리)
이러한 불편함을 해소하기 위해 나온 것이 고수준 파일 입출력(표준 입출력 라이브러리)인데 이는 c언어의 표준 함수로 제공되며 바이트 단위로 한정 하지 않고 버퍼를 통해 앍기와 쓰기를 수행할 수 있도록 하였다. 또 다양한 입출력데이터 변환기능도 구현되어있다.
파일 지시자는 파일 포인터 FILE *fd를 따른다.
예) fread, fwrite, fgets, fputsm fprintf, fscanf ..
파일 기술자
파일 기술자는 현재 열려 있는 파일을 구분할 목적으로 유닉스가 붙여놓은 번호로 0번 부터 시작하는데, 0,1,2 번 파일 기술자는 용도가 나뉘어져 있다.
0번 : 표준 입력, 키보드
1번 : 표준 출력, 모니터 화면
2번 : 표준 오류 출력, 모니터 화면
'C' 카테고리의 다른 글
연결리스트 정리 (0) | 2023.10.25 |
---|---|
.과 -> 의 차이 (0) | 2023.10.24 |
strdup 함수의 구현 (0) | 2023.10.21 |
calloc 함수 구현 (0) | 2023.10.21 |
strnstr 함수의 구현 (0) | 2023.10.17 |