READV(2)

NOMBRE
readv, writev - lee o escribe un vector

SINOPSIS
#include <sys/uio.h>

int readv(int fd, const struct iovec * vector, size_t count);

int writev(int fd, const struct iovec * vector, size_t count);

struct iovec {
  __ptr_t iov_base; /* Comienzo de Direcciones. */
  size_t iov_len; /* Longitud en bytes. */
};

DESCRIPCIÓN
readv lee datos desde el descriptor de archivo fd, y pone los resultados en la zona de memoria descrita por vector. El número de bloques de memoria es especificado por count. Los bloques son llenados en el orden especificado. Opera sólo como lector excepto que los datos son puestos en vector en lugar de en una zona contigua de memoria. writev escribe datos a el descriptor de archivo fd, y desde la zona de memoria descrita por vector. El número de bloques de memoria es especificado por count. Los bloques son usados en el orden especificado. Opera sólo como escritor excepto que los datos son tomados desde vector en lugar de una zona contigua de memoria.

VALOR RETORNADO
En caso de éxito readv devuelve el número de bytes leídos. En caso de éxito writev devuelve el número de bytes escritos. En caso de error, -1 es devuelto, y errno es establecido apropiadamente.

ERRORES

EINVAL
    Un argumento inválido ha sido dado. Por ejemplo count podría ser mayor que MAX_IOVEC, o cero. fd podría estar unido a un objeto impropio para lectura (por readv) o escritura (por writev).

EFAULT
    "Fallo de segmentación." Probablemente vector o alguno de los punteros iov_base a puntos de memoria no esta correctamente asignado.

EBADF
    El descriptor de archivo fd no es válido.

EINTR
    La llamada ha sido interrumpida por una señal antes de que algún dato fuese leído/escrito.

EAGAIN
    Sin bloqueo de E/S ha sido seleccionado usando O_NONBLOCK y no hubo datos disponibles inmediatamente para ser leídos. (O el descriptor de archivo fd apunta a un objeto que está bloqueado.)

EISDIR
    fd hace referencia a un directorio.

EOPNOTSUP
    fd hace referencia a un socket o dispositivo que no soporta lectura/escritura.

Otros errores pueden ocurrir, depende de el objeto conectado a fd.

AJUSTADO A
4.4BSD ( readv y writev son funciones aparecidas por primeras vez en BSD 4.2).

VER TAMBIÉN
read(2), write(2), fprintf(3), fscanf(3)