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'ON

       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  exito, se devuelve el numero de bytes leidos (cero indica
       fin de fichero), y el indicador de posicion  del  fichero  avanza  este
       numero  de bytes.  No es un error si este numero es menor que el numero
       de bytes pedidos; esto puede suceder por  ejemplo  porque  ahora  mismo
       haya  disponible  un numero menor de bytes (quizas porque estamos cerca
       del fin-de-fichero, o porque estamos leyendo de una interconexion, o de
       una  terminal), o porque read() ha sido interrumpido por una senal.  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 posicion del
       fichero (si lo hay) cambia o no.

ERRORES

       EINTR  La llamada ha sido interrumpida por una senal antes  de  que  se
              haya leido ningun dato.

       EAGAIN Se  ha  seleccionado E/S no bloqueante empleando O_NONBLOCK y no
              habia ningun dato inmediatamente disponible para la lectura.

       EIO    Error de E/S. Esto puede ocurrir por ejemplo cuando  el  proceso
              esta  en  un grupo de procesos en segundo plano, intenta leer de
              su tty controladora, y o esta bloqueando o no teniendo en cuenta
              a  SIGTTIN  o  su grupo de procesos esta huerfano. Tambien 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 valido o no esta abierto para
              lectura.

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

       EFAULT buf esta 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 numero de
       bytes ya leidos.

CONFORME A

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

RESTRICCIONES

       En sistemas de ficheros NFS, leer cantidades  pequenas  de  datos  solo
       actualizara  la  fecha  de  acceso al fichero la primera vez, las demas
       llamadas pueden no hacerlo mas. Esto esta producido por el mecanismo de
       cache  en  la parte cliente, porque la mayoria 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 cache del
       cliente no provocaran actualizaciones del atime (fecha/hora de  acceso)
       en  el servidor puesto que no hay lecturas en la parte del servidor. La
       semantica de UNIX puede obtenerse deshabilitando el atributo  de  cache
       en  la  parte  cliente,  pero  en  la  mayoria  de las situaciones esto
       aumentara  sustancialmente  la  carga  del  servidor  y  disminuira  el
       rendimiento.

       Muchos    sistemas   de   ficheros   y   discos   fueron   considerados
       suficientemente  rapidos  para  no  necesitar  la   implementacion   de
       O_NONBLOCK.   Asi,  O_NONBLOCK puede no estar disponible sobre ficheros
       y/o discos.

V'EASE TAMBI'EN

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