Linux |
CentOS 4.8 |
|
readv(2) |
readv, writev − Lire ou écrire un vecteur (vector). |
#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. */ }; |
readv lit les données depuis le descripteur de fichier fd, et place le résultat 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 contigu. 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 identique à write a la seule différence que les données sont lues depuis vector plutôt que depuis un buffer contigu. |
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. |
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 avant d’avoir pu lire/écrire quoi que ce soit. |
||
EAGAIN |
Les entrées/sorties sont non-bloquantes (O_NONBLOCK). Soit aucune donnée n’est disponible en lecture, soit l’objet associe à fd est verrouillé. |
||
EISDIR |
fd correspond à un répertoire. |
EOPNOTSUPP |
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. |
BSD 4.4 (les fonctions readv et writev 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. |
read(2), write(2), fprintf(3), fscanf(3) |
Christophe Blaess, 1997. |
readv(2) |