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

NOMBRE

       read - lee de un descriptor de fichero

SINOPSIS

       #include <unistd.h>

       ssize_t read(int fd, void *buf, size_t nbytes);

DESCRIPCIÓN

       read()  intenta  leer  hasta  nbytes  bytes del fichero cuyo descriptor de fichero es fd y
       guardarlos en la zona de memoria que empieza en buf.

       Si nbytes es cero, read() devuelve cero y no tiene otro efecto.  Si nbytes  es  mayor  que
       SSIZE_MAX, el resultado es indefinido.

VALOR DEVUELTO

       En caso de éxito, se devuelve el número de bytes leídos (cero indica fin de fichero), y el
       indicador de posición del fichero avanza este número de bytes.  No es  un  error  si  este
       número  es  menor  que  el  número de bytes pedidos; esto puede suceder por ejemplo porque
       ahora mismo haya disponible un número menor de bytes (quizás porque estamos cerca del fin-
       de-fichero,  o  porque  estamos leyendo de una interconexión, o de una terminal), o porque
       read() ha sido interrumpido por una señal.  En caso de error, se devuelve -1, y se pone un
       valor  apropiado  en errno. En este caso se deja indeterminado si el indicador de posición
       del fichero (si lo hay) cambia o no.

ERRORES

       EINTR  La llamada ha sido interrumpida por una señal antes de que  se  haya  leído  ningún
              dato.

       EAGAIN Se  ha  seleccionado  E/S no bloqueante empleando O_NONBLOCK y no había ningún dato
              inmediatamente disponible para la lectura.

       EIO    Error de E/S. Esto puede ocurrir por ejemplo cuando el proceso está en un grupo  de
              procesos en segundo plano, intenta leer de su tty controladora, y o está bloqueando
              o no teniendo en cuenta a SIGTTIN o su grupo de  procesos  está  huérfano.  También
              puede  ocurrir cuando hay un error de E/S de bajo nivel mientras se lee de un disco
              o cinta.

       EISDIR fd se refiere a un directorio.

       EBADF  fd no es un descriptor de fichero válido o no está abierto para lectura.

       EINVAL fd está asociado a un objeto que no es apropiado para su lectura.

       EFAULT buf está fuera del espacio de direcciones accesible del usuario.

       Pueden ocurrir otros errores, dependiendo del objeto conectado a fd.  POSIX permite que un
       read que se interrumpa tras leer algunos datos devuelva -1 (con el valor EINTR en errno) o
       que devuelva el número de bytes ya leídos.

CONFORME A

       SVr4, SVID, AT&T, POSIX, X/OPEN, BSD 4.3

RESTRICCIONES

       En sistemas de ficheros NFS, leer cantidades pequeñas de datos sólo actualizará  la  fecha
       de  acceso  al fichero la primera vez, las demás llamadas pueden no hacerlo más. Esto está
       producido por el mecanismo de caché en la parte cliente, porque la mayoría si no todos los
       clientes  NFS  le  dejan  las actualizaciones de la fecha/hora de acceso al servidor y las
       lecturas en la parte del cliente satisfechas  por  el  caché  del  cliente  no  provocarán
       actualizaciones del atime (fecha/hora de acceso) en el servidor puesto que no hay lecturas
       en la parte del servidor. La semántica de UNIX puede obtenerse deshabilitando el  atributo
       de  caché  en  la  parte  cliente,  pero  en  la mayoría de las situaciones esto aumentará
       sustancialmente la carga del servidor y disminuirá el rendimiento.

       Muchos sistemas de ficheros y discos fueron considerados suficientemente rápidos  para  no
       necesitar  la  implementación  de  O_NONBLOCK.   Así, O_NONBLOCK puede no estar disponible
       sobre ficheros y/o discos.

VÉASE TAMBIÉN

       close(2), fcntl(2), ioctl(2),  lseek(2),  readdir(2),  readlink(2),  select(2),  write(2),
       fread(3), readv(3)