Provided by: manpages-es_1.55-9_all bug

NOMBRE

       lseek - reposiciona el puntero de lectura/escritura de un fichero

SINOPSIS

       #include <sys/types.h>
       #include <unistd.h>

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

DESCRIPCIÓN

       La  función  lseek  reposiciona  el  puntero  del descriptor de fichero
       fildes con el argumento offset de acuerdo con la  directiva  whence  as
       follows:

       SEEK_SET
              El puntero se coloca a offset bytes.

       SEEK_CUR
              El  número  de  bytes  indicado en offset se suma a la dirección
              actual y el puntero se coloca en la dirección resultante.

       SEEK_END
              El puntero se coloca al final del fichero más offset bytes.

       La función lseek permite colocar el  puntero  de  fichero  después  del
       final  de  fichero.   Si  después  se escriben datos en este punto, las
       lecturas siguientes de datos dentro del hueco que  se  forma  devuelven
       ceros (hasta que realmente se escriban datos dentro de ese hueco).

VALOR DEVUELTO

       En  el  caso  de una ejecución correcta, lseek devuelve la posición del
       puntero resultante medida en bytes desde el principio del  fichero.  Si
       se  produce  un  error,  se  devuelve  el valor (off_t)-1 y en errno se
       coloca el tipo de error.

ERRORES

       EBADF  fildes no es un descriptor de fichero abierto.

       ESPIPE fildes está asociado a una tubería, socket, o FIFO.

       EINVAL whence no es un valor adecuado.

CONFORME A

       SVr4, POSIX, BSD 4.3

RESTRICCIONES

       Algunos dispositivos son incapaces de buscar y POSIX no especifica  qué
       dispositivos deben soportar la búsqueda.

       Restricciones   específicas   de  Linux:  el  uso  de  lseek  sobre  un
       dispositivo tty (terminal) devuelve ESPIPE. Otros sistemas devuelven el
       número  de  caracteres  escritos,  usando  SEEK_SET  para establecer el
       contador. Algunos dispositivos, como por ejemplo /dev/null, no provocan
       el error ESPIPE, pero devuelven un puntero cuyo valor es indefinido.

OBSERVACIONES

       La  utilización  de  whence  en este documento es incorrecta en inglés,
       pero se usa por motivos históricos.  Cuando convierta  código  antiguo,
       sustituya los valores para whence con las siguientes macros:

       antiguo    nuevo
       0         SEEK_SET
       1         SEEK_CUR
       2         SEEK_END
       L_SET     SEEK_SET
       L_INCR    SEEK_CUR
       L_XTND    SEEK_END

       SVR1-3 devuelve long en lugar de off_t, BSD devuelve int.

       Observe  que  los  descriptores de fichero creados con dup(2) o fork(2)
       comparten el puntero actual de fichero, por lo que reposicionarse sobre
       tales ficheros puede estar sujeto a condiciones de carrera.

VÉASE TAMBIÉN

       dup(2), fork(2), open(2), fseek(3)