READV(3) Manuel du programmeur Linux READV(3)
NOM
readv, writev - Lire ou écrire des données dans des
buffers multiples.
SYNOPSIS
#include <sys/uio.h>
int readv (int filedes, const struct iovec *vector,
size_t count);
int writev (int filedes, const struct iovec *vector,
size_t count);
DESCRIPTION
La fonction readv() lit count blocs depuis le fichier
associé au descripteur filedes et les place dans les mul
tiples buffers décrits par vector.
La fonction writev() écrit au plus count blocs contenus
dans les multiples buffers décrits par vector, dans le
fichier associé au descripteur filedes.
vector pointe vers une struct iovec définie dans
<sys/uio.h> ainsi :
struct iovect
{
void *iovbase; /* Adresse de départ */
size_t iov_len; /* Nombre d'octets */
} ;
Les buffers sont traités dans l'ordre vector[0], vec
tor[1], ... vector[count].
La fonction readv() se comporte exactement comme read(2)
sauf que plusieurs buffers sont remplis.
La fonction writev() se comporte exactement comme write(2)
sauf que plusieurs buffers sont copiés dans le fichier.
VALEUR RENVOYÉE
La fonction readv() renvoie le nombre d'octets lus, ou -1
si elle échoue. La fonction writev() renvoie le nombre
d'octets écrits. En cas d'échec errno contient le code
d'erreur.
ERREURS
EBADF fd n'est pas un descripteur de fichier valide.
EINVAL fd n'est pas accessible en lecture (avec readv())
ou en écriture (avec writev()).
EFAULT buf pointe en dehors de l'espace d'adressage
GNU 6 Novembre 1996 1
READV(3) Manuel du programmeur Linux READV(3)
accessible.
EAGAIN On a réclamé des entrées/sorties non-bloquantes
lors de l'appel open(), et la lecture ou l'écriture
sont impossibles pour le moment.
EINTR La lecture ou l'écriture ont été interrompues avant
de pouvoir traiter des données.
CONFORMITÉ
inconnu
BUGS
Il est fortement déconseille de mélanger les appels à des
fonctions comme readv() ou writev(), qui travaillent sur
les descripteurs de fichiers, avec les fonctions de la
bibliothèque stdio. Les résultats sont imprévisibles.
VOIR AUSSI
read(2), write(2)
TRADUCTION
Christophe Blaess, 1997.
GNU 6 Novembre 1996 2