off_t lseek(int fildes, off_t offset, int whence);
描述The lseek() function repositions the offset of the open file associated with the file descriptor fildes to the argument offset according to the directive whence as follows:
|The offset is set to offset bytes.|
|The offset is set to its current location plus offset bytes.|
|The offset is set to the size of the file plus offset bytes.|
返回值Upon successful completion, lseek() returns the resulting offset location as measured in bytes from the beginning of the file. Otherwise, a value of (off_t)-1 is returned and errnois set to indicate the error.
|EBADF||fildes is not an open file descriptor.|
|EINVAL||whence is not one of SEEK_SET, SEEK_CUR, SEEK_END; or the resulting file offset would be negative, or beyond the end of a seekable device.|
|The resulting file offset cannot be represented in an off_t.|
|ESPIPE||fildes is associated with a pipe, socket, or FIFO.|
遵循于SVr4, 4.3BSD, POSIX.1-2001.
RESTRICTIONSSome devices are incapable of seeking and POSIX does not specify which devices must support lseek().
Linux specific restrictions: using lseek() on a tty device returns ESPIPE.
SVr1-3 returns long instead of off_t, BSD returns int.
Note that file descriptors created by dup(2) or fork(2) share the current file position yiibaier, so seeking on such files may be subject to race conditions.