Provided by: manpages-fr-dev_3.27fr1.4-1_all bug

NOM

       sendfile - Transfert de donnees entre descripteurs de fichier

SYNOPSIS

       #include <sys/sendfile.h>

       ssize_t sendfile(int out_fd, int in_fd, off_t *offset, size_t count);

DESCRIPTION

       sendfile()  copie des donnees entre deux descripteurs de fichier. Comme
       la copie est assuree a l'interieur du noyau, sendfile() ne perd pas  de
       temps  a  transferer  des  donnees  entre  l'espace  noyau  et l'espace
       utilisateur,  et  est   donc   plus   efficace   que   la   combinaison
       read(2)/write(2).

       in_fd  doit etre un descripteur de fichier ouvert en lecture, et out_fd
       un descripteur ouvert en ecriture.

       Si offset n'est pas NULL, c'est un pointeur sur une variable  contenant
       la  tete de lecture (Ndt : file offset) a partir de laquelle sendfile()
       commencera la lecture dans in_fd. Lorsque  sendfile()  se  termine,  la
       variable est remplie avec la position de l'octet immediatement apres le
       dernier octet lu. Si offset n'est pas NULL, sendfile() ne  modifie  pas
       la  position  courante  dans  le fichier in_fd ; autrement, la position
       courante de la tete de lecture est  ajustee  pour  refleter  le  nombre
       d'octets lus a partir de in_fd.

       Si  offset  est  NULL,  les donnees sont lues dans in_fd a partir de la
       position courante de la tete de lecture, et celle-ci sera  ajustee  par
       l'appel.

       L'argument count est le nombre d'octets a copier entre les descripteurs
       de fichiers.

       Actuellement (Linux  2.6.9),  in_fd  doit  correspondre  a  un  fichier
       supportant les operations de type mmap(2), et ne peut donc pas etre une
       socket. En revanche, out_fd doit correspondre a une socket.

       Les applications peuvent se rabattre sur  read(2)/write(2)  au  cas  ou
       sendfile() echoue avec EINVAL ou ENOSYS.

VALEUR RENVOY'EE

       Si  le  transfert  a  reussi, le nombre d'octets ecrits dans out_fd est
       renvoye. Sinon, sendfile() renvoie -1, et errno est configure.

ERREURS

       EAGAIN L'ecriture   est   non   bloquante   (attribut   O_NONBLOCK   du
              descripteur), et l'operation devrait bloquer.

       EBADF  Le  fichier  d'entree  n'est  pas ouvert en lecture, ou celui de
              sortie en ecriture.

       EFAULT Un pointeur se trouve en dehors de l'espace d'adressage.

       EINVAL Le descripteur est invalide ou verrouille, ou une  operation  de
              type mmap(2) n'est pas disponible sur in_fd.

       EIO    Erreur pendant la lecture depuis in_fd.

       ENOMEM Memoire insuffisante pour lire depuis in_fd.

VERSIONS

       L'appel  systeme  sendfile() est une nouveaute de Linux 2.2. Le fichier
       d'en-tete <sys/sendfile.h> est present depuis la glibc 2.1.

CONFORMIT'E

       Pas specifie dans POSIX.1-2001, ni dans d'autres normes.

       D'autres  systemes   Unix   implementent   sendfile()   avec   d'autres
       semantiques,  et d'autres prototypes. Il ne faut pas l'utiliser dans un
       programme portable.

NOTES

       Si vous voulez utiliser sendfile() pour envoyer un fichier  au  travers
       d'une  socket  TCP,  tout  en  le precedant de donnees d'en-tete, voyez
       l'option TCP_CORK de tcp(7) pour minimiser le  nombre  de  paquets,  et
       optimiser les performances.

       Sous  Linux 2.4 et precedents, out_fd pouvait correspondre a un fichier
       ordinaire,  et  sendfile()  modifiait  la  position  courante  dans  ce
       fichier.

VOIR AUSSI

       mmap(2), open(2), socket(2), splice(2)

COLOPHON

       Cette  page  fait  partie  de  la  publication 3.27 du projet man-pages
       Linux. Une description du projet et des instructions pour signaler  des
       anomalies       peuvent       etre       trouvees      a      l'adresse
       <URL:http://www.kernel.org/doc/man-pages/>.

TRADUCTION

       Depuis 2010, cette traduction est maintenue a l'aide  de  l'outil  po4a
       <URL:http://po4a.alioth.debian.org/>   par   l'equipe   de   traduction
       francophone       au       sein        du        projet        perkamon
       <URL:http://perkamon.alioth.debian.org/>.

       Christophe  Blaess  <URL:http://www.blaess.fr/christophe/> (1996-2003),
       Alain  Portal  <URL:http://manpagesfr.free.fr/>  (2003-2006).    Julien
       Cristau et l'equipe francophone de traduction de Debian (2006-2009).

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

       Vous  pouvez  toujours avoir acces a la version anglaise de ce document
       en utilisant la commande << man -L C <section> <page_de_man> >>.

Linux                           15 fevrier 2010                    SENDFILE(2)