man readv (Appels systèmes) - Lire ou écrire dans plusieurs buffers.
NOM
readv, writev - Lire ou écrire dans plusieurs buffers.
SYNOPSIS
#include <sys/uio.h> int readv(int fd, const struct iovec * vecteur, int nb); int writev(int fd, const struct iovec * vecteur, int nb);
DESCRIPTION
La fonction readv() lit nb blocs depuis le descripteur de fichier fd dans les multiples buffers décrits par le vecteur.
La fonction writev() écrit au plus nb blocs décrits par le vecteur dans le fichier associé au descripteur fd.
Le vecteur pointe sur une struct iovec définie dans <sys/uio.h> ainsi :
struct iovec { void *iov_base; /* Adresse de début */ size_t iov_len; /* Nombre d'octets */ };
Les buffers sont traités dans l'ordre indiqué.
La fonction readv() travaille comme read(2) sauf que plusieurs buffers sont remplis.
La fonction writev() travaille comme write(2) sauf que plusieurs buffers sont écrits.
VALEUR RENVOYÉE
S'ils réussissent readv renvoie le nombre d'octets lus et writev renvoie le nombre d'octets écrits. En cas d'échec -1 est renvoyé, et errno contient le code d'erreur.
ERREURS
Les erreurs indiquées pour read(2) et write(2à sont susceptibles de se produire. De plus il peut survenir :
- EINVAL
- La somme des iov_len valeurs déborde du type ssize_t, ou le nombre nb de vecteur est nul ou supérieur à MAX_IOVEC.
CONFORMITÉ
BSD 4.4 (les fonctions readv et writev sont apparues dans BSD 4.2), Unix98. La libc5 de Linux utilisait les types size_t pour le paramètre count et int en retour de ces fonctions.
BOGUES
Il est déconseillé de mélanger les appels readv() ou writev() qui agissent sur les descripteurs avec les fonctions de la bibliothèque stdio ; les résultats sont indéfinis et probablement différents de ce que l'on attend
VOIR AUSSI
TRADUCTION
Christophe Blaess, 1996-2003.