동캄의 코딩도장
FILE I/O [1] 본문
Low-level vs High-level file IO
Low-level File IO (System call)
- System call을 이용해서 파일 입출력 수행
- FIle descriptor 사용
- Byte 단위로 디스크에 입출력
- 특수 파일에 대한 입출력 가능
High-level File IO (Buffered IO)
- C Standard libary를 사용해서 파일 입출력 수행
- File pointer 사용
- 버퍼(block) 단위로 디스크에 입출력
Low-level File I/O에 대해 살펴볼 예정
file I/O = open/close , read/write, create/remove
Openning files - open(2)
ex)
#include <sys/types.h>
#include <sys/stat.h>
#include <fcntl.h>
int open (const char* pathanme, int flags [, mode_t mode];
pathname : 열려는 파일의 경로 (파일 이름 포함)
flags: 파일을 여는 방법(access mode) 설정
mode (file access permission): 파일을 새로 생성(O_CREATE)할 때만 유효
Return: file descriptor
File descriptor
- 열려있는 파일을 구분하는 정수(integer)값 (대부분의 파일을 지칭 가능)
- Process별로 kernel이 관리
- 파일을 열 때 순차적으로 할당 됨 (Process당 최대 fd 수 =1024(default, 변경 가능)
- Default fds (수정 가능)
0: stdin
1: stdout
2: stderr
flags
ex)
O_RDONLY 파일 읽기 전용으로 open
O_RDWR 파일 읽기와 쓰기 가능하게 open 등등
File table
- 열린파일을 관리하는 표
- Kernel이 process별로 유지
- 열린 파일에 대한 각종 정보 관리 (Access mode, file offset, pointer to files)
mode
- 파일 권한 설정 값 사용
- 정의 된 플래그 사용
ex) S_IRUSR | S_IWUSR | S_IRGRP |S_IROTH
Openning files - close(2)
ex)
#include <unistd.h>
int close (int df);
fd (file descriptor)
- 닫으려는 file descriptor
- Return (success ? 0 : -1)
Error hadnling for systtem call
- System call은 실패 시 -1을 반환
- ERror code는 errno에 저장 됨
- perror(3): Error message를 출력 해주는 함수
'CS > 시스템프로그래밍' 카테고리의 다른 글
FILE I/O [3] (0) | 2022.02.04 |
---|---|
FILE I/O [2] (0) | 2022.02.04 |
파일 개요& 기본 명령어 (0) | 2022.02.04 |
Makefile & make (0) | 2022.02.04 |
VI editor 사용법 (0) | 2022.02.04 |