off64_t lseek64(int fd, off64_t offset, int whence);
For more details, return value, and errors, see lseek(2).
Four interfaces are available: lseek(2), lseek64(), llseek(2), and the raw system call _llseek(2).
off_t lseek(int fd, off_t offset, int whence);
lseek(2) uses the type off_t. This is a 32-bit signed type on 32-bit architectures, unless one compiles with
#define _FILE_OFFSET_BITS 64in which case it is a 64-bit signed type.
off64_t lseek64(int fd, off64_t offset, int whence);
The library routine lseek64() uses a 64-bit type even when off_t is a 32-bit type. Its prototype (and the type off64_t) is available only when one compiles with
#define _LARGEFILE64_SOURCEThe function lseek64() is available since glibc 2.1, and is defined to be an alias for llseek().
loff_t llseek(int fd, loff_t offset, int whence);
The type loff_t is a 64-bit signed type. The library routine llseek() is available in libc5 and glibc and works without special defines. Its prototype was given in <unistd.h> with libc5, but glibc does not provide a prototype. This is bad, since a prototype is needed. Users should add the above prototype, or something equivalent, to their own source. When users complained about data loss caused by a miscompilation of e2fsck(8), glibc 2.1.3 added the link-time warning
"the `llseek' function may be dangerous; use `lseek64' instead."
This makes this function unusable if one desires a warning-free compilation.
int _llseek(int fd, off_t offset_hi, off_t offset_lo, loff_t *result, int whence);
For more details, see llseek(2).