zion -  readv


Nom

readv, writev - Lire ou écrire dans plusieurs buffers.

Résumé

.nf #include <sys/uio.h> int readv(int fd , const struct iovec * vecteur , int nb ); int writev(int fd , const struct iovec * vecteur , int nb ); .fi

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 :

.nf .in 10 struct iovec { .in 14 void *iov_base; /* Adresse de début */ size_t iov_len; /* Nombre d'octets */ .in 10 }; .fi

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.

Bugs

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

read (2), write (2)

Traduction

Christophe Blaess, 1996-2003.

Poster un commentaire
Utilisateur
Mot de passe
 
Informaticien.be - © 2002-2024 AkretioSPRL  - Generated via Kelare
The Akretio Network: Akretio - Freedelity - KelCommerce - Votre publicité sur informaticien.be ?