Museum

Home

Lab Overview

Retrotechnology Articles

⇒ Online Manual

Media Vault

Software Library

Restoration Projects

Artifacts Sought

Related Articles

creat(2)

dup(2)

fcntl(2)

lseek64(2)

open(2)

unistd(5)

lseek(2)

NAME

lseek − move read/write file pointer; seek

SYNOPSIS

#include <unistd.h>

off_t lseek(int fildes, off_t offset, int whence);

DESCRIPTION

lseek() sets the file pointer associated with the file descriptor as follows:

• If whence is SEEK_SET, the pointer is set to offset bytes. 

• If whence is SEEK_CUR, the pointer is set to its current location plus offset.

• If whence is SEEK_END, the pointer is set to the size of the file plus offset.

These symbolic constants are defined in <unistd.h>. 

RETURN VALUE

When lseek() completes successfully, it returns an integer, which is the resulting file offset as measured in bytes from the beginning of the file.  Otherwise, a value of -1 is returned and errno is set to indicate the error. 

For all files that are not character or block special files, the integer returned on successful completion is non-negative.  For character or block special files that correspond to disk sections larger than 2 gigabytes, a non-negative integer is returned for successful seeks beyond 2 gigabytes.  This value is the resulting file offset as measured in bytes from the beginning of the file, when taken as an unsigned value.  -1 always indicates an error return, even when encountered on greater than 2 gigabyte disk sections. 

ERRORS

lseek() fails and the file offset remains unchanged if one or more of the following is true:

[EBADF] fildes is not an open file descriptor. 

[ESPIPE] fildes is associated with a pipe, socket, or FIFO. 

[EINVAL] whence is not one of the supported values. 

[EINVAL] The resulting file offset would be negative. 

[EINVAL] The resulting file offset would be a value which cannot be represented correctly in an object of type off_t. 

WARNINGS

Some devices are incapable of seeking.  The value of the file offset associated with such a device is undefined. 

Using lseek() with a whence of SEEK_END on device special files is not supported and the results are not defined. 

SEE ALSO

creat(2), dup(2), fcntl(2), lseek64(2), open(2), unistd(5). 

STANDARDS CONFORMANCE

lseek(): AES, SVID2, SVID3, XPG2, XPG3, XPG4, FIPS 151-2, POSIX.1

Hewlett-Packard Company  —  HP-UX Release 10.20:  July 1996

Typewritten Software • bear@typewritten.org • Edmonds, WA 98026