READV(2) Manuel du programmeur Linux READV(2)
NOM
readv, writev - Lire ou écrire un vecteur (vector).
SYNOPSIS
#include <sys/uio.h>
int readv(int fd, const struct iovec * vector, int count)
int writev(int fd, const struct iovec * vector, int
count);
struct iovec {
__ptr_t iov_base; /* Starting address. */
size_t iov_len; /* Length in bytes. */
};
DESCRIPTION
readv lit les données depuis le descripteur de fichier fd,
et place le resultats dans les buffers décrits par vector.
Le nombre de buffers est indiqué par count. Les buffers
sont remplis dans l'ordre spécifié. Le fonctionnement est
identique à read à la seule différence que les données
sont écrites dans vector plutôt que dans un buffer con
tigu.
writev écrit les données se trouvant dans les buffers
décrits par vector dans le descripteur de fichier fd. Le
nombre de buffers est indiqué par count. Les buffers sont
lus dans l'ordre spécifié. Le fonctionnement est iden
tique à write a la seule différence que les données sont
lues depuis vector plutôt que depuis un buffer contigu.
VALEUR RENVOYÉE
readv renvoie le nombre d'octets lus s'il réussit.
writev renvoie le nombre d'octets lus s'il réussit.
En cas d'échec -1 est renvoyé, et errno contient le code
d'erreur.
ERREURS
EINVAL Un argument est invalide. Par exemple count est
supérieur à MAX_IOVEC, ou est nul, ou encore fd
correspond à un objet non accessible en lecture
(pour readv) ou en écriture (pour writev).
EFAULT vector ou l'un des iov_base pointent en dehors de
l'espace d'adressage accessible.
EBADF fd n'est pas un descripteur de fichier valide.
EINTR L'appel système a été interrompu par un signal
Linux 18 Mai 1999 1
READV(2) Manuel du programmeur Linux READV(2)
avant d'avoir pu lire/écrire quoi que ce soit.
EAGAIN Les entrées/sorties sont non-bloquantes (O_NON
BLOCK). Soit aucune donnée n'est disponible en
lecture, soit l'objet associe à fd est verrouillé.
EISDIR fd correspond à un répertoire.
EOPNOTSUP
fd correspond à une socket ou à un périphérique ne
supportant pas la lecture ou l'écriture.
ENOMEM Pas assez de mémoire pour le noyau.
D'autres erreurs peuvent survenir, en fonction du type
d'objet associé à fd.
CONFORMITÉ
BSD 4.4 (les fonctions readvetwritev sont apparues dans
BSD 4.2), Unix98. La libc5 de Linux utilisait le type
size_t pour le paramètre count ce qui est logique mais pas
standard.
VOIR AUSSI
read(2), write(2), fprintf(3), fscanf(3)
TRADUCTION
Christophe Blaess, 1997.
Linux 18 Mai 1999 2