[UNIX] 저수준 시스템콜

Taegang Yun·2023년 9월 28일
1

Unix 프로그래밍

목록 보기
6/19

파일 읽고 쓰는 방법

저수준 파일 입출력

  • 리눅스 커널의 시스템 호출을 이용해 파일 입출력을 수행
  • 시스템 호출을 이용하므로 파일에 좀 더 빠르게 접근할 수 있는 장점
  • 또한 바이트 단위로 파일의 내용을 다루므로 일반 파일뿐만 아니라 특수 파일도 읽고 쓸 수 있음
  • 바이트 단위로만 입출력을 수행 가능 하므로 응용프로그램 작성시 다른 추가기능을 함수로 추가 구현 해야함
  • 열린 파일을 참조할 때 파일 기술자 사용

파일 기술자

  • 0번 : 표준 입력
  • 1번 : 표준 출력
  • 2번 : 표준 오류 출력

파일 열기 open()

int open(const char *pathname, int flags, mode_t mode);

int open(const char *pathname, int flags);

  • pathname : 열려는 파일이 있는 경로
  • flags : 파일 상태 플래그
  • mode : 접근 권한

플래그 지정

파일 생성 creat()

int creat(const char *pathname, mode_t mode);

  • pathname : 파일을 생성할 경로
  • mode : 접근 권한

파일 읽기 read()

ssize_t read(int fd, void *fd, size_t count);

  • fd : 파일 기술자
  • buf : 파일에 기록할 데이터를 저장한 메모리 영역
  • count : buf의 크기 (기록할 데이터의 크기)

파일 쓰기 write()

ssize_t write(int fd, const void *buf, size_t count);

  • fd : 파일 기술자
  • buf : 파일에 기록할 데이터를 저장한 메모리 영역
  • count : buf의 크기

파일 오프셋 위치 지정 lseek()

off_t lseek(int fd, off_t offset, int whence);

  • fd : 파일 기술자
  • offset : 이동할 오프셋 위치
  • whence : 오프셋의 기준 위치

파일 입출력 상수 O_APPEND

  • open이 성공하면 파일의 마지막 바이트 바로 뒤에 위치
  • 그 이후의 write는 전부 파일의 끝에 자료를 추가하게 됨
  • 파일의 끝에 자료를 추가하는 방법

open("filename", O_WRONLY|O_APPEND);
write(fd, buf, BUFSIZE);

profile
언젠간 전문가가 되겠지

0개의 댓글