Rechercher une page de manuel

Chercher une autre page de manuel:

writev

Autres langues

Langue: fr

Version: 17 octobre 2002 (ubuntu - 01/11/07)

Section: 2 (Appels système)

NOM

readv, writev - Lire ou écrire dans plusieurs tampons

SYNOPSIS

 #include <sys/uio.h>
 
 ssize_t readv(int fd, const struct iovec *vector, int count);
 
 ssize_t writev(int fd, const struct iovec *vector, int count);
 

DESCRIPTION

La fonction readv() lit count blocs depuis le descripteur de fichier fd dans les multiples tampons décrits par le vector.

La fonction writev() écrit au plus count blocs décrits par le vector dans le fichier associé au descripteur fd.

Le vector pointe sur une struct iovec définie dans <sys/uio.h> ainsi :


 struct iovec {
     void *iov_base;   /* Adresse de début */
     size_t iov_len;   /* Nombre d'octets  */
 };
 

Les tampons sont traités dans l'ordre indiqué.

La fonction readv() travaille comme read(2) sauf que plusieurs tampons sont remplis.

La fonction writev() travaille comme write(2) sauf que plusieurs tampons 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 valeurs iov_len déborde du type ssize_t, ou le nombre count de vecteur est nul ou supérieur au maximum autorisé.

CONFORMITÉ

BSD 4.4 (les fonctions readv() et writev() sont apparues dans BSD 4.2), POSIX.1-2001. La libc5 de Linux utilisait le type size_t pour le paramètre count et int en retour de ces fonctions.

SPÉCIFICITÉS LINUX

POSIX.1-2001 permet à l'implémentation de limiter le nombre d'éléments qui peuvent être passés dans vector. Une implémentation peut annoncer sa limite en définissant IOV_MAX dans <limits.h> ou à l'exécution à travers sysconf(_SC_IOV_MAX). Sous Linux, la limite annoncée ainsi est 1024, qui est la véritable limite du noyau. Cependant, les fonctions d'enrobage de la glibc font du travail supplémentaire si elles détectent que l'appel système a échoué en raison de cette limite. Pour readv(), la fonction d'enrobage alloue un tampon temporaire assez grand pour tous les éléments de vector, passe ce tampon à read(), copie les données du tampon vers les emplacements indiqués par le champ iov_base des éléments de vector, puis libère le tampon. La fonction d'enrobage de writev() fonctionne de façon similaire avec un tampon temporaire et un appel à write().

BOGUES

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

Cette page de manuel a été traduite et mise à jour par Christophe Blaess <http://www.blaess.fr/christophe/> entre 1996 et 2003, puis par Alain Portal <aportal AT univ-montp2 DOT fr> jusqu'en 2006, et mise à disposition sur http://manpagesfr.free.fr/.

Les mises à jour et corrections de la version présente dans Debian sont directement gérées par Julien Cristau <jcristau@debian.org> et l'équipe francophone de traduction de Debian.

Veuillez signaler toute erreur de traduction en écrivant à <debian-l10n-french@lists.debian.org> ou par un rapport de bogue sur le paquet manpages-fr.

Vous pouvez toujours avoir accès à la version anglaise de ce document en utilisant la commande « man -L C <section> <page_de_man> ».

Les forêts précèdent les peuples, les déserts les suivent.
-+- François René de Chateaubriand -+-