.\" .\" Copyright (c) 1996 Tom Bjorkholm .\" .\" Esta documentación es libre; usted puede redistribuirla y/o .\" modificarla bajo las condiciones de la Licencia Pública General .\" GNU versión 2 o posterior; publicada por la Free Software .\" Foundation. .\" .\" Las referencias de la Licencia Pública General GNU a .\" "código objeto" y "ejecutables" serán interpretadas como .\" la salida de cualquier sistema de formateo de documentos, .\" incluyendo la salida intermedia e impresa. .\" .\" Este manual es distribuido con la esperanza de que sea útil, .\" pero SIN GARANTÍA ALGUNA; incluso sin la garantía implícita .\" de MERCABILIDAD o APTITUD PARA UN PROPOSITO PARTICULAR. .\" Ver la Licencia Pública General para más detalles. .\" .\" Usted ha debido recibir una copia de la Licencia Pública .\" General GNU conjuntamente con este manual; si no, escriba a .\" la Free Software Foundation, Inc., 59 Temple Place, Suite 330, .\" Boston, MA 02111, USA. .\" .\" 1996-04-12 Tom Bjorkholm .\" Primera versión escrita .\" Modificada el Martes 22 de Oct. 17:41:07 1996 por .\" Eric S. Raymond .\" Traducida al Español el 26 de Enero de 1.998 por .\" Xavier E. Mármol .\" Traducción revisada el 6 de abril de 1999 por .\" Juan Piernas Cánovas .\" .TH READV 2 "20 enero 1999" "Linux 2.2.0-pre8" "Manual del Programador Linux" .SH NOMBRE readv, writev \- lee o escribe un vector .SH SINOPSIS .B #include .sp .BI "int readv(int " fd ", const struct iovec * " vector ", int " count ); .sp .BI "int writev(int " fd ", const struct iovec * " vector ", int " count ); .sp .B \fBstruct iovec {\fR .br \fB__ptr_t \fIiov_base\fB;\fR /* Comienzo de Direcciones. */ .br \fBsize_t \fIiov_len\fB;\fR /* Longitud en bytes. */ .br \fB};\fR .fi .SH DESCRIPCIÓN \fBreadv\fR lee datos desde el descriptor de fichero \fIfd\fR y pone los resultados en la zona de memoria descrita por \fIvector\fR. El número de bloques de memoria se especifica en \fIcount\fR. Los bloques se llenan en el orden indicado. Funciona igual que \fBread\fR salvo que los datos son puestos en \fIvector\fR en lugar de en una zona contigua de memoria. \fBwritev\fR escribe datos al descriptor de fichero \fIfd\fR y desde la zona de memoria descrita por \fIvector\fR. El número de bloques de memoria se especifica en \fIcount\fR. Los bloques son usados en el orden indicado. Funciona igual que \fBwrite\fR excepto que los datos son tomados desde \fIvector\fR en lugar de una zona contigua de memoria. .SH VALOR DEVUELTO En caso de éxito \fBreadv\fR devuelve el número de bytes leídos. En caso de éxito \fBwritev\fR devuelve el número de bytes escritos. En caso de error, se devuelve \-1 y se asigna a \fIerrno\fR un valor adecuado. .SH ERRORES .TP .B EINVAL Se ha dado un argumento inválido. Por ejemplo \fIcount\fR podría ser mayor que \fBMAX_IOVEC\fR o cero. \fIfd\fR podría estar unido a un objeto inadecuado para lectura (para \fBreadv\fR) o escritura (para \fBwritev\fR). .TP .B EFAULT "Fallo de segmentación." Probablemente \fIvector\fR o alguno de los punteros \fIiov_base\fR apuntan a una zona de memoria que no está correctamente reservada. .TP .B EBADF El descriptor de fichero \fIfd\fR no es válido. .TP .B EINTR La llamada ha sido interrumpida por una señal antes de que algún dato fuese leído/escrito. .TP .B EAGAIN Se ha seleccionado E/S no bloqueante usando \fBO_NONBLOCK\fR y no había datos disponibles inmediatamente para ser leídos. (O el descriptor de fichero \fIfd\fR apunta a un objeto que está bloqueado.) .TP .B EISDIR \fIfd\fR hace referencia a un directorio. .TP .B EOPNOTSUP \fIfd\fR hace referencia a un socket o dispositivo que no soporta lectura/escritura. .TP .B ENOMEM No hay suficiente memoria del núcleo disponible. .PP Podrían ocurrir otros errores, dependiendo del objeto conectado a \fIfd\fR. .SH "CONFORME A" 4.4BSD (las funciones .B readv y .B writev aparecieron por primeras vez en BSD 4.2) y Unix98. La libc5 de Linux usa \fBsize_t\fR como el tipo del parámetro \fIcount\fR, lo cual es lógico pero no estándar. .SH "VÉASE TAMBIÉN" .BR read (2), .BR write (2), .BR fprintf (3), .BR fscanf (3)