동캄의 코딩도장

FILE I/O [1] 본문

CS/시스템프로그래밍

FILE I/O [1]

동 캄 2022. 2. 4. 14:04

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