| 12
 3
 4
 5
 6
 7
 8
 9
 10
 11
 12
 13
 14
 15
 16
 17
 18
 19
 20
 21
 22
 23
 24
 25
 26
 27
 28
 29
 30
 31
 32
 33
 34
 35
 36
 37
 38
 39
 40
 41
 42
 43
 44
 45
 46
 47
 48
 49
 50
 51
 52
 53
 54
 55
 56
 57
 58
 59
 60
 61
 62
 63
 64
 65
 66
 67
 68
 69
 70
 71
 72
 73
 74
 75
 76
 77
 78
 79
 80
 81
 82
 83
 84
 85
 86
 87
 88
 89
 90
 91
 92
 93
 94
 95
 96
 97
 98
 99
 100
 101
 102
 103
 104
 105
 106
 107
 108
 109
 110
 111
 112
 113
 114
 115
 116
 117
 118
 119
 120
 121
 122
 123
 124
 125
 126
 127
 128
 129
 130
 131
 132
 133
 134
 135
 136
 137
 138
 139
 140
 141
 142
 143
 144
 145
 146
 147
 
 | .\" Hey Emacs! This file is -*- nroff -*- source.
.\"
.\" This manpage is Copyright (C) 1992 Drew Eckhardt;
.\"                               1993 Michael Haardt, Ian Jackson.
.\"
.\" Permission is granted to make and distribute verbatim copies of this
.\" manual provided the copyright notice and this permission notice are
.\" preserved on all copies.
.\"
.\" Permission is granted to copy and distribute modified versions of this
.\" manual under the conditions for verbatim copying, provided that the
.\" entire resulting derived work is distributed under the terms of a
.\" permission notice identical to this one
.\" 
.\" Since the Linux kernel and libraries are constantly changing, this
.\" manual page may be incorrect or out-of-date.  The author(s) assume no
.\" responsibility for errors or omissions, or for damages resulting from
.\" the use of the information contained herein.  The author(s) may not
.\" have taken the same level of care in the production of this manual,
.\" which is licensed free of charge, as they might when working
.\" professionally.
.\" 
.\" Formatted or processed versions of this manual, if unaccompanied by
.\" the source, must acknowledge the copyright and authors of this work.
.\"
.\" Modified Sat Jul 24 00:06:00 1993 by Rik Faith <faith@cs.unc.edu>
.\" Modified Wed Jan 17 16:02:32 1996 by Michael Haardt
.\"   <michael@cantor.informatik.rwth-aachen.de>
.\" Modified Thu Apr 11 19:26:35 1996 by Andries Brouwer <aeb@cwi.nl>
.\" Modified Sun Jul 21 18:59:33 1996 by Andries Brouwer <aeb@cwi.nl>
.\" Modified Fri Jan 31 16:47:33 1997 by Eric S. Raymond <esr@thyrsus.com>
.\" Modified Sat Jul 12 20:45:39 1997 by Michael Haardt
.\"   <michael@cantor.informatik.rwth-aachen.de>
.\" Translated into Spanish Wed Jan 21 1998 by Gerardo Aburruzaga
.\" García <gerardo.aburruzaga@uca.es>
.\" Translation revised Mon Aug 17 1998 by Juan Piernas <piernas@ditec.um.es>
.\"
.TH READ 2 "12 julio 1997" "Linux 2.0.32" "Manual del Programador de Linux"
.SH NOMBRE
read \- lee de un descriptor de fichero
.SH SINOPSIS
.nf
.B #include <unistd.h>
.sp
.BI "ssize_t read(int " fd ", void *" buf ", size_t " nbytes );
.fi
.SH DESCRIPCIÓN
.B read()
intenta leer hasta
.I nbytes
bytes del fichero cuyo descriptor de fichero es
.I fd
y guardarlos en la zona de memoria que empieza en
.IR buf .
.PP
Si
.I nbytes
es cero, \fBread()\fP devuelve cero y no tiene otro efecto.
Si
.I nbytes
es mayor que SSIZE_MAX, el resultado es indefinido.
.PP
.SH "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 \fBread()\fP ha sido interrumpido por una señal.
En caso de error, se devuelve \-1, y se pone un valor apropiado en
\fIerrno\fP. En este caso se deja indeterminado si el indicador de
posición del fichero (si lo hay) cambia o no.
.SH ERRORES
.TP
.B EINTR
La llamada ha sido interrumpida por una señal antes de que se haya
leído ningún dato.
.TP
.B EAGAIN 
Se ha seleccionado E/S no bloqueante empleando
.B O_NONBLOCK
y no había ningún dato inmediatamente disponible para la lectura.
.TP
.B 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.
.TP
.B EISDIR
.I fd
se refiere a un directorio.
.TP
.B EBADF
.I fd
no es un descriptor de fichero válido o no está abierto para lectura.
.TP
.B EINVAL
.I fd
está asociado a un objeto que no es apropiado para su lectura.
.TP
.B EFAULT
.I buf
está fuera del espacio de direcciones accesible del usuario.
.PP
Pueden ocurrir otros errores, dependiendo del objeto conectado a
.IR fd .
POSIX permite que un
.B read
que se interrumpa tras leer algunos datos
devuelva \-1 (con el valor EINTR en \fIerrno\fP) o que devuelva el
número de bytes ya leídos.
.SH "CONFORME A"
SVr4, SVID, AT&T, POSIX, X/OPEN, BSD 4.3
.SH 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.
.PP
Muchos sistemas de ficheros y discos fueron considerados suficientemente
rápidos para no necesitar la implementación de
.B O_NONBLOCK.
Así, O_NONBLOCK puede no estar disponible sobre ficheros
y/o discos.
.SH "VÉASE TAMBIÉN"
.BR close (2),
.BR fcntl (2),
.BR ioctl (2),
.BR lseek (2),
.BR readdir (2),
.BR readlink (2),
.BR select (2),
.BR write (2),
.BR fread (3),
.BR readv (3)
 |