Provided by:
manpages-es_1.55-10_all 
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)