728x90
반응형
lseek()
lseek() 함수는 파일의 current file offset (현재 파일의 작업 위치)를 변경하는 역할을 한다.
lseek()는 <unistd.h>에 정의되어 있으며 시그니처는 아래 코드와 같다.
off_t lseek(int fd, off_t offset, int whence);
fd는 변경할 파일의 디스크립터, offset은 움직일 오프셋의 크기, whence는 기준점이 되는 오프셋을 의미한다.
whence에 들어갈 수 있는 값들은 아래와 같으며 이는 <fcntl.h>에 정의되어 있다.
#define SEEK_SET 0
#define SEEK_CUR 1
#define SEEK_END 2
SEEK_SET으로 설정하면 기준이 파일의 처음, 즉 파일 오프셋은 0으로 설정된다.
SEEK_CUR로 설정하면 기준이 현재 작업 중인 위치, 즉 현재 파일 오프셋으로 설정된다.
SEEK_END로 설정하면 기준이 파일의 마지막으로 설정된다.
따라서 아래 코드처럼 사용하는 것이 가능하다.
off_t new_offset = lseek(fd, -10, SEEK_END);
if (new_offset == -1) {
exit(-1); // 에러 발생
}
위 코드는 파일의 끝에서 10칸 위치로 파일 오프셋을 수정하겠다는 의미이다.
lseek()는 동작에 성공하면 수정된 offset을 반환하며 실패하였을 경우 -1을 반환한다.
* off_t 자료형은 <sys/types.h>에 정의되어 있다.
728x90
반응형
'C언어 > 시스템 소프트웨어' 카테고리의 다른 글
[시스템 소프트웨어] User Mode, Kernal Mode, System Call (0) | 2024.10.08 |
---|---|
[시스템 소프트웨어/C언어] stat(), fstat() (0) | 2024.10.08 |
[C언어] perror, errno, exit (0) | 2024.10.07 |
[C언어] 파일 입출력 (open, close, write, read) (0) | 2024.10.07 |
[시스템 소프트웨어] File Sharing (file offset) (0) | 2024.10.07 |