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)