이 름
lseek − 읽 기 /쓰 기 파 일 변 위 (offset)을 재 배 치 한 다 .
사 용 법
#include
<sys/types.h>
#include <unistd.h>
off_t lseek(int fildes, off_t offset, int whence);
설 명
lseek
함 수 는 파 일 기
술 자 fildes 의 변 위
를 다 음 과 같 이
지 시 어 whence 에 따
라 인 자 offset 으 로
재 배 치 한 다 :
SEEK_SET
변 위 은 offset 바 이 트 로 설 정 한 다 .
SEEK_CUR
변 위 는 현 재 위 치 더 하 기 offset 바 이 트 로 설 정 한 다 .
SEEK_END
변 위 는 파 일 크 기 더 하 기 offset 바 이 트 로 설 정 한 다 .
lseek 함 수 는 파 일 의 변 위 를 파 일 의 끝 에 존 재 하 는 끝 넘 어 로 설 정 할 수 있 다 . 만 일 데 이 터 가 이 시 점 에 서 나 중 에 쓰 여 진 다 면 , 그 사 이 에 연 속 적 으 로 읽 은 데 이 터 는 0 바 이 트 들 을 반 환 한 다 .(데 이 터 가 실 제 로 그 사 이 에 쓰 여 질 때 까 지 . )
반 환 값
성 공 시 , lseek 는 파 일 시 작 에 서 바 이 트 로 측 정 된 것 처 럼 결 과 변 위 위 치 를 반 환 한 다 . 그 렇 지 않 으 면 , (off_t)−1 의 값 이 반 환 되 며 errno 는 에 러 를 가 리 키 도 록 설 정 된 다 .
에 러
EBADF |
Fildes 가 열 려 진 파 일 기 술 자 가 아 니 다 . |
|||
ESPIPE |
Fildes 가 pipe, socket 또 는 FIFO와 관 련 되 어 있 다 . |
|||
EINVAL |
Whence 가 적 당 한 값 이 아 니 다 . |
호 환
SVr4, POSIX, BSD 4.3
RESTRICTIONS
몇 몇 장 치 들 은 이 동 이 불 가 능 하 며 POSIX는 지 원 되 어 야 하 는 장 치 들 을 지 정 하 지 않 았 다 .
리 눅 스 특 정 제 한 들 : tty 장 치 에 서 lseek의 사 용 은 ESPIPE 를 반 환 한 다 . 다 른 시 스 템 들 은 쓰 여 진 문 자 수 를 반 환 하 며 SEEK_SET을 카 운 터 로 설 정 하 여 사 용 한 다 . 몇 몇 장 치 들 , 즉 /dev/null 는 ESPIPE 에 러 를 야 기 하 지 않 지 만 값 이 정 의 되 지 않 은 포 인 터 를 반 환 한 다 .
주 의
whence 의 문 서 사 용 은 잘 못 된 영 어 이 지 만 , 역 사 적 이 유 때 문 에 유 지 된 다 . 예 전 코 드 로 바 꿀 때 , whence 값 들 을 다 음 매 크 로 로 대 신 해 라 :
SVR1-3 는 off_t 대 신 에 long 를 반 환 하 며 , BSD 는 int 를 반 환 한 다 .
관 련 항 목
역 자
정 강 훈 <skyeyes [AT] soback.net>, 2000년 9월 16일