[컴퓨터공학]/[시스템 프로그래밍]

[시스템 프로그래밍] Low-level File IO(3) - File access methods

딥러닝 도전기 2022. 9. 27. 11:54

[시스템 프로그래밍] Low-level File IO(3) -  File access methods

파일 접근 방법에는 순차 접근(Sequential access)와 직접 접근(Directed access)가 있습니다.

순차접근은 fgetc() 와 같은 함수를 사용하여 File을 bytes 단위로 순서대로 접근하는 방법이고, 직접 접근은 lseek(), seek()와 같은 함수를 통해 원하는 위치로 직접 접근하는 방법입니다.

 

이번 포스팅에서는 직접 접근에 대해 알아보도록 하겠습니다.


1. $lseek()$

$ man -s 2 lseek

 

  • lseek(int fd, off_t offset, int whence);
fd(file descriptor) : 대상 file descriptor
offset : 이동시킬 byte 수 (양수 or 음수)
whence : 기준 위치 (어디서부터 읽을지)
return : 이동 후의 offset (이동 후 위치), if error, return -1

whence는 SEEK_SET, SEEK_CUR, SEEK_END의 세 가지 인자를 받습니다.

SEEK_SET : 파일의 시작

SEEK_CUR : 현재 위치

SEEK_END : 파일의 끝

 

lseek(fd, 5, SEEK_SET);
// 파일의 시작에서 5번째 byte로 이동

lseek(fd, 0, SEEK_END);
// 파일의 끝으로 이동

cur_offset = lseek(fd, 0, SEEK_CUR);
// cur_offset : 현재 위치

 

반응형