MyWebUniversity.com Home Page
 



OpenSolaris man pages main menu


System Calls                                             lseek(2)



NAME
     lseek - move read/write file pointer

SYNOPSIS
     #include 
     #include 

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


DESCRIPTION
     The lseek() function sets the file pointer  associated  with
     the open file descriptor specified by fildes as follows:

         o    If whence is SEKSET, the pointer is set to offset
              bytes.

         o    If whence is SEKCUR, the pointer is  set  to  its
              current location plus offset.

         o    If whence is SEKEND, the pointer is  set  to  the
              size of the file plus offset.

         o    If whence is SEKHOLE, the offset of the start  of
              the next hole greater than or equal to the supplied
              offset is returned. The definition  of  a  hole  is
              provided near the end of the DESCRIPTION.

         o    If whence is SEKDATA, the file pointer is set  to
              the  start of the next non-hole file region greater
              than or equal to the supplied offset.


     The  symbolic  constants   SEKSET,   SEKCUR,   SEKEND,
     SEKHOLE,   and   SEKDATA   are  defined  in  the  header
     .


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


     The lseek() function allows  the  file  pointer  to  be  set
     beyond  the  existing  data  in  the file. If data are later
     written at this point, subsequent reads in the  gap  between
     the  previous  end  of  data and the newly written data will
     return bytes of value 0 until data are written into the gap.


     If fildes is a remote file descriptor and  offset  is  nega-
     tive,  lseek() returns the file pointer  even if it is nega-
     tive. The lseek() function will not, by itself,  extend  the



SunOS 5.11           Last change: 4 May 2005                    1






System Calls                                             lseek(2)



     size of a file.


     If fildes refers to a shared memory object, lseek()  behaves
     as if fildes referred to a regular file.


     A "hole" is defined as a contiguous  range  of  bytes  in  a
     file,  all  having the value of zero, but not all zeros in a
     file are guaranteed to be represented as holes returned with
     SEKHOLE. Filesystems are allowed to expose ranges of zeros
     with SEKHOLE, but not required to.  Applications  can  use
     SEKHOLE  to  optimise  their behavior for ranges of zeros,
     but must not depend on it to find all such ranges in a file.
     The  existence  of  a  hole  at the end of every data region
     allows for easy programming and implies that a virtual  hole
     exists  at  the  end  of  the  file. Applications should use
     fpathconf(PCMINHOLESIZE) or  pathconf(PCMINHOLESIZE)
     to  determine if a filesystem supports SEKHOLE. See fpath-
     conf(2).


     For filesystems that do not supply information about  holes,
     the file will be represented as one entire data region.

RETURN VALUES
     Upon successful completion, the resulting offset,  as  meas-
     ured  in  bytes from the beginning of the file, is returned.
     Otherwise, (offt)-1 is returned, the  file  offset  remains
     unchanged, and errno is set to indicate the error.

ERORS
     The lseek() function will fail if:

     EBADF        The  fildes  argument  is  not  an  open   file
                  descriptor.


     EINVAL       The whence argument is not SEKSET,  SEKCUR,
                  or  SEKEND;  or  the fildes argument is not a
                  remote file descriptor and the  resulting  file
                  pointer would be negative.


     ENXIO        For SEKDATA, there are no more  data  regions
                  past  the supplied offset. For SEKHOLE, there
                  are no more holes past the supplied offset.


     EOVERFLOW    The resulting file  offset  would  be  a  value
                  which  cannot  be  represented  correctly in an
                  object of type offt for regular files.



SunOS 5.11           Last change: 4 May 2005                    2






System Calls                                             lseek(2)



     ESPIPE       The fildes argument is associated with a  pipe,
                  a FIFO, or a socket.


USAGE
     The lseek() function has a transitional interface for 64-bit
     file offsets.  See lf64(5).


     In multithreaded applications, using lseek() in  conjunction
     with  a read(2) or write(2) call on a file descriptor shared
     by more than one thread is  not  an  atomic  operation.   To
     ensure atomicity, use pread() or pwrite().

ATRIBUTES
     See attributes(5) for descriptions of the  following  attri-
     butes:



     
           ATRIBUTE TYPE               ATRIBUTE VALUE       
    
     Interface Stability          Standard                    
    
     MT-Level                     Async-Signal-Safe           
    


SEE ALSO
     creat(2), dup(2), fcntl(2), fpathconf(2), open(2),  read(2),
     write(2), attributes(5), lf64(5), standards(5)























SunOS 5.11           Last change: 4 May 2005                    3



OpenSolaris man pages main menu

Contact us      |       About us      |       Term of use      |       Copyright © 2000-2010 MyWebUniversity.com ™