LSEEK(2)

명칭
lseek - 읽기 / 기록 파일 오프셋(offset) 위치를 변경한다

프로그램 라이브러리
libc

서식
<unistd.h> off_t lseek(int fildes, off_t offset, int whence)

해설
lseek() 함수는, 지시문 whence 에 따라 파일 기술자 fildes 의 오프셋(offset)를 인수 offset (으)로 이동합니다. 인수 fildes (은)는 오픈 파일 기술자가 아니면 안됩니다. lseek() (은)는, 다음과 같이 파일 기술자 fildes 에 대응하는 파일 위치 포인터를 이동합니다.

whence 하지만 SEEK_SET 의 경우, 오프셋(offset)는 offset 바이트로 설정됩니다.

whence 하지만 SEEK_CUR 의 경우, 오프셋(offset)는 현재의 위치에 offset 바이트를 가산한 것으로 설정됩니다.

whence 하지만 SEEK_END 의 경우, 오프셋(offset)는 파일의 사이즈에 offset 바이트를 가산한 것이 됩니다.

lseek() 함수에 의해, 파일 오프셋(offset)를 파일의 기존의 파일의 끝 (EOF) (을)를 넘는 곳(중)으로 설정할 수 있습니다. 후에 데이터가 이 점에 써 넣어지면(자), 그것 이후의 갭내의 데이터에 대한 읽기는 (데이터가 실제로 갭내에 기입해질 때까지) 데이터로서 0 을 돌려줍니다.

시크 할 수 없는 디바이스도 있습니다. 그러한 디바이스에 대응하는 포인터의 값은 미정도리가 됩니다.

반환값
처리가 정상적으로 완료하면(자) lseek() (은)는, 파일의 선두로부터 측정한 결과의 오프셋(offset) 위치를 바이트 단위로 돌려줍니다. 그렇지 않은 경우는 -1 이 돌려주어져 에러를 나타내기 위해서(때문에) errno 하지만 설정됩니다.

에러
lseek() (은)는 다음의 경우에 처리를 실패해, 파일 위치 포인터는 변경되지 않습니다.

[EBADF]
    fildes 하지만 오픈 파일 기술자가 아닙니다.

[ESPIPE]
    fildes (은)는 파이프, 소켓, 또는 FIFO 와 대응 지을 수 있고 있습니다.

[EINVAL]
    whence 하지만 적절한 값이 아닙니다.

관련 항목
dup(2), open(2)

버그
이 문서의 whence 의 사용법은 올바르지 않은 영어입니다만, 역사적인 이유로 유지되고 있습니다.

표준
lseek() 함수는 p1003.1-90 에 준거하고 있습니다.

역사
lseek() 함수는 AT&T UNIX 그리고 등장했습니다.