Linux |
CentOS 4.8 |
|
writev(3) |
readv, writev − Lire ou écrire des données dans des buffers multiples. |
#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); |
La fonction readv() lit count blocs depuis le fichier associé au descripteur filedes et les place dans les multiples 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 iovec { void *iov_base; /* Adresse de départ */ size_t iov_len; /* Nombre d’octets */ }; Les buffers sont traités dans l’ordre vector[0], vector[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. |
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. |
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 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. |
inconnu |
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. |
read(2), write(2) |
Christophe Blaess, 1997. |
writev(3) |