이 문서는 수정될 수 있습니다. 최신문서는 Joinc Wiki를 참고하세요.
1장. lseek(2)
읽기및 쓰기를 위해서 파일의 위치를 재지정
1.1. 사용법
#include <sys/types.h> |
1.2. 설명
lseek()는 열린 파일 지정자 fildes로 부터 offset만큼 위치를 변경한다. 위치 변경시 기준점을 정할 수 있는데 whence를 이용해서 지정가능 하다.
- SEEK_SET
파일의 처음을 기준으로 offset을 계산한다.
- SEEK_CUR
파일의 현재 위치를 기준으로 offset을 계산한다.
- SEEK_END
파일의 마지막을 기준으로 offset을 계산한다.
1.3. 반환값
성공했을 경우 파일의 시작으로 부터 떨어진 byte만큼의 offset을 리턴한다. 실패했을 경우 -1을 리턴한다.
1.4. 에러
- EBADF
Fildes가 열린 파일 지정자가 아니다.
- ESPIPE
Fildes가 파이프, 소켓 혹은 FIFO이다.
- EINVAL
Whence가 유효한 값이 아니다.
1.5. 예제
#include <unistd.h> |
큰 파일(2GBytes 이상)을 다루고자 해야 하는 문제에 봉착하는 분들을 위해서 LFS를 참고자료로 다루었으면 좋겠습니다.
LFS 참고링크 - minzkn- 요약하면 컴파일 옵션에 "-D_FILE_OFFSET_BITS=64 -D_LARGEFILE_SOURCE -D_LARGEFILE64_SOURCE"을 주고 open/creat 함수에서 O_LARGEFILE을 사용하고 off_t 의 확장에 대한 고려등에 대해서 다루어졌으면 합니다.
- 오늘 집에가서 관련 내용을 살펴보고 테스트 후 문서를 업데이트 시키도록 하겠습니다. 재미있을 것 같군요
좋은 정보 감사합니다. -yundream
:::
이글과 관련된 글