llseek - move extended read/write file pointer
offset_t llseek(int fildes, offset_t offset, int whence);
The llseek() function sets the 64-bit extended file pointer
associated with the open file descriptor specified by fildes
o If whence is SEEK_SET, the pointer is set to offset
o If whence is SEEK_CUR, the pointer is set to its
current location plus offset.
o If whence is SEEK_END, the pointer is set to the size
of the file plus offset.
Although each file has a 64-bit file pointer associated with
it, some existing file system types (such as tmpfs) do not
support the full range of 64-bit offsets. In particular, on
such file systems, non-device files remain limited to
offsets of less than two gigabytes. Device drivers may sup-
port offsets of up to 1024 gigabytes for device special
Some devices are incapable of seeking. The value of the file
pointer associated with such a device is undefined.
Upon successful completion, llseek() returns the resulting
pointer location as measured in bytes from the beginning of
the file. Remote file descriptors are the only ones that
allow negative file pointers. Otherwise, -1 is returned, the
file pointer remains unchanged, and errno is set to indicate
The llseek() function will fail if:
EBADF The fildes argument is not an open file descriptor.
The whence argument is not SEEK_SET, SEEK_CUR, or
SEEK_END; the offset argument is not a valid offset
for this file system type; or the fildes argument is
not a remote file descriptor and the resulting file
pointer would be negative.
The fildes argument is associated with a pipe or FIFO.
creat(2), dup(2), fcntl(2), lseek(2), open(2)
Man(1) output converted with