readv | Début | Suivant | Sommaire | Préc.page.lue | Accueil |
NOM | Début | Précédent | Suivant | Sommaire | Préc.page.lue | Accueil |
SYNOPSIS | Début | Précédent | Suivant | Sommaire | Préc.page.lue | Accueil |
#include <sys/uio.h> ssize_t readv(int fd, const struct iovec *iov, int iovcnt); ssize_t writev(int fd, const struct iovec *iov, int iovcnt);
DESCRIPTION | Début | Précédent | Suivant | Sommaire | Préc.page.lue | Accueil |
La fonction writev() écrit iovcnt tampons de donnés décrits par iov dans le fichier associé au descripteur fd (« tampon de collecte »).
iov pointe sur un tableau de structures iovec définies dans <sys/uio.h> ainsi :
struct iovec { void *iov_base; /* Adresse de début */ size_t iov_len; /* Nombre d'octets */ };
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.
Les tampons sont traités dans l'ordre indiqué. Cela signifie que readv() remplit complètement iov[0] avant de traiter iov[1], et ainsi de suite. (S'il n'y a pas suffisamment de données, tous les tampons pointés par iov peuvent ne pas être remplis.) De la même manière, writev() écrit tout le contenu de iov[0] avant de traiter iov[1], et ainsi de suite.
Les transferts de données effectués par readv() et writev() sont atomiques : les données écrites avec writev() le sont d'un seul bloc qui n'est pas interrompu par des écritures issues d'autres processus (mais voir pipe(7) pour pour une exeception) ; de manière analogue, readv() est garantie de lire un bloc contigu de données depuis le fichier, quelles que soient les opérations de lecture effectuées par d'autres threads ou processus qui ont des descripteurs de fichiers faisant référence à la même description de fichier ouvert (voir open(2)).
VALEUR RENVOYÉE | Début | Précédent | Suivant | Sommaire | Préc.page.lue | Accueil |
ERREURS | Début | Précédent | Suivant | Sommaire | Préc.page.lue | Accueil |
CONFORMITÉ | Début | Précédent | Suivant | Sommaire | Préc.page.lue | Accueil |
NOTES | Début | Précédent | Suivant | Sommaire | Préc.page.lue | Accueil |
Notes Linux | Début | Précédent | Suivant | Sommaire | Préc.page.lue | Accueil |
BOGUES | Début | Précédent | Suivant | Sommaire | Préc.page.lue | Accueil |
EXEMPLE | Début | Précédent | Suivant | Sommaire | Préc.page.lue | Accueil |
char *str0 = "hello "; char *str1 = "world\n"; struct iovec iov[2]; ssize_t nwritten; iov[0].iov_base = str0; iov[0].iov_len = strlen(str0); iov[1].iov_base = str1; iov[1].iov_len = strlen(str1); nwritten = writev(STDOUT_FILENO, iov, 2);
VOIR AUSSI | Début | Précédent | Suivant | Sommaire | Préc.page.lue | Accueil |
TRADUCTION | Début | Précédent | Suivant | Sommaire | Préc.page.lue | Accueil |
Ce document est une traduction réalisée par Christophe Blaess <http://www.blaess.fr/christophe/> le 14 octobre 1996 et révisée le 29 décembre 2007.
L'équipe de traduction a fait le maximum pour réaliser une adaptation française de qualité. La version anglaise la plus à jour de ce document est toujours consultable via la commande : « LANG=C man 2 readv ». N'hésitez pas à signaler à l'auteur ou au traducteur, selon le cas, toute erreur dans cette page de manuel.
Sommaire | Début | Suivant | Sommaire | Préc.page.lue | Accueil |
Table des mots clés | Début | Suivant | Sommaire | Préc.page.lue | Accueil |
EINVAL | ERREURS |