Manpages

NOMBRE

readv, writev − lee o escribe datos en varios búferes

SINOPSIS

#include <sys/uio.h>

int readv(int descfic, const struct iovec *vector,
size_t
num);

int writev(int descfic, const struct iovec *vector,
size_t
num);

DESCRIPCIÓN

La función readv() lee num bloques del fichero asociado con el descriptor de fichero descfic en los múltiples búferes descritos por vector.

La función writev() escribe como mucho num bloques descritos por vector al fichero asociado con el descriptor de fichero descfic.

El puntero vector apunta a una struct iovec definida en <sys/uio.h> como

struct iovect
{

void *iovbase;

/* Dirección de comienzo */

size_t iov_len; /* Número de bytes */

} ;

Los búferes se procesan en el orden vector[0], vector[1], ... vector[num].

La función readv() trabaja igual que read(2) excepto en que se rellenan múltiples búferes.

La función writev() trabaja como write(2) excepto en que se escriben múltiples búferes.

VALOR DEVUELTO

La función readv() devuelve el número de bytes ó −1 en caso de error; la función writev() devuelve el número de bytes escritos.

ERRORES

Las funciones readv() y writev() pueden fallar y poner errno a los siguientes valores:

EBADF

descfic no es un descriptor de fichero válido.

EINVAL

descfic no sirve para leer (para readv()) o para escribir (para writev()).

EFAULT

vector está afuera del espacio de direcciones del proceso.

EAGAIN

Se ha seleccionado E/S no bloqueante en la llamada a open() y la lectura o escritura no ha podido hacerse inmediatamente.

EINTR

La lectura o la escritura han sido interrumpidas antes de que se hayan transferido datos.

CONFORMES CON

No se sabe.

FALLOS

No es recomendable mezclar llamadas a funciones como readv() o writev(), que operan con descriptores de ficheros, con las funciones de la biblioteca stdio; los resultados serán indefinidos y probablemente no los deseados.

VÉASE TAMBIÉN

read(2), write(2)