COHERENT manpages
This page displays the COHERENT manpage for lseek() [Set read/write position].
List of available manpages
Index
lseek() -- System Call (libc) Set read/write position #include <unistd.h> long lseek(fd, where, how) int fd, how; long where; lseek() changes the seek position, or the point within a file where the next read or write operation is performed. fd is the file's file descriptor, which is returned by open(). where and how describe the new seek position. where gives the number of bytes that you wish to move the seek position. It is measured from the beginning of the file if how equals SEEK_SET (zero), from the current seek position if how equals SEEK_CUR (one), and from the end of the file if how equals SEEK_END (two). A successful call to lseek() returns the new seek position. For example, position = lseek(fd, 100L, SEEK_SET); moves the seek position 100 bytes past the beginning of the file; whereas position = lseek(fd, 0L, SEEK_CUR); returns the current seek position and does not change the seek position at all. You can create a sparse file by seeking beyond the current size of the file and writing. The ``hole'' between the end of the file and where the write occurs is read as zero and will occupy no disk space. For example, if you lseek() 10,000 bytes past the current end of file and write a string, the data will be written 10,000 bytes past the old end of file and all intervening matter will be considered part of the file. lseek() differs from its cousin fseek() in that lseek() is a system call and uses a file descriptor, whereas fseek() is a C function and uses a FILE pointer. If all goes well, lseek() returns the new seek position. If an error occurs, such as seeking to a negative position, lseek() returns -1L and sets errno to an appropriate value. See Also libc, unistd.h POSIX Standard, §6.5.3 Notes lseek() is permitted on character-special files, but drivers do not generally implement it. As a result, seeking a terminal will not generate an error but will have no discernible effect.