Copyright © tutorialspoint.com
off_t lseek(int fildes, off_t offset, int whence);
| Tag | Description |
|---|---|
| SEEK_SET | |
| The offset is set to offset bytes. | |
| SEEK_CUR | |
| The offset is set to its current location plus offset bytes. | |
| SEEK_END | |
| The offset is set to the size of the file plus offset bytes. | |
| Tag | Description |
|---|---|
| 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. |
| EOVERFLOW | |
| The resulting file offset cannot be represented in an off_t. | |
| ESPIPE | fildes is associated with a pipe, socket, or FIFO. |
Linux specific restrictions: using lseek() on a tty device returns ESPIPE.
When converting old code, substitute values for whence with the following macros:
| old | new |
| 0 | SEEK_SET |
| 1 | SEEK_CUR |
| 2 | SEEK_END |
| L_SET | SEEK_SET |
| L_INCR | SEEK_CUR |
| L_XTND | SEEK_END |
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 pointer, so seeking on such files may be subject to race conditions.
Copyright © tutorialspoint.com