Linux

CentOS 4.8

readv(2)


READV

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 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.

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 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.

CONFORMITÃ

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.

VOIR AUSSI

read(2), write(2), fprintf(3), fscanf(3)

TRADUCTION

Christophe Blaess, 1997.


readv(2)