Provided by: manpages-fr-dev_3.32d0.2p4-1_all bug

NOM

       write - Écrire dans un descripteur de fichier

SYNOPSIS

       #include <unistd.h>

       ssize_t write(int fd, const void *buf, size_t count);

DESCRIPTION

       write()  lit  au  maximum count octets dans la zone mémoire pointée par
       buf, et les écrit dans le fichier référencé par le descripteur fd.

       Le nombre d'octets écrits peut être inférieur à count par exemple si la
       place  disponible sur le périphérique est insuffisante, ou la limite de
       ressource  RLIMIT_FSIZE  est  atteinte  (consultez  setrlimit(2)),   ou
       l'appel  est interrompu par un gestionnaire de signal après avoir écrit
       moins de count octets. (Consultez aussi pipe(7).)

       Pour un fichier sur  lequel  lseek(2)  est  possible  (par  exemple  un
       fichier  ordinaire),  l'écriture  a lieu à la position courante dans le
       fichier, et elle est déplacée du nombre d'octets effectivement  écrits.
       Si  le fichier était ouvert avec O_APPEND, la position avant l'écriture
       est à la fin du fichier. La modification de la position  et  l'écriture
       sont effectuées de façon atomique.

       POSIX  réclame  qu'une  lecture  avec read(2) effectuée après le retour
       d'une écriture avec write(), renvoie les nouvelles données.  Notez  que
       tous les systèmes de fichiers ne sont pas compatibles avec POSIX.

VALEUR RENVOYÉE

       write()   renvoie  le  nombre  d'octets  écrits  (0  signifiant  aucune
       écriture), ou -1  s'il  échoue,  auquel  cas  errno  contient  le  code
       d'erreur.

       Si  count  vaut  0  et si fd correspond à un fichier ordinaire, write()
       peut renvoyer un code d'erreur si  l'une  des  erreurs  ci-dessous  est
       détectée.  Si  aucune  erreur n'est détectée, 0 sera renvoyé sans autre
       effet de bord. Si count est nul et  fd  est  un  fichier  spécial,  les
       résultats sont indéfinis.

ERREURS

       EAGAIN Le  descripteur  de fichier fd fait référence à un fichier autre
              qu'une socket et a été marqué comme non  bloquant  (O_NONBLOCK),
              et l'écriture devrait bloquer.

       EAGAIN ou EWOULDBLOCK
              Le  descripteur  de fichier fd fait référence à un fichier autre
              qu'une socket et a été marqué comme non  bloquant  (O_NONBLOCK),
              et  l'écriture  devrait bloquer. POSIX.1-2001 permet de renvoyer
              l'une ou l'autre des erreurs dans ce cas et n'exige pas que  ces
              constantes  aient  la  même  valeur.  Une  application  portable
              devrait donc tester les deux possibilités.

       EBADF  fd n'est pas un descripteur de fichier  valable,  ou  n'est  pas
              ouvert en écriture.

       EDESTADDRREQ
              fd  fait  référence  à  une  socket  de datagramme pour laquelle
              l'adresse  du  correspondant  n'a  pas  été   initialisée   avec
              connect(2).

       EFAULT buf pointe en dehors de l'espace d'adressage accessible.

       EFBIG  Tentative  d'écrire un fichier dont la taille dépasse un maximum
              dépendant de l'implémentation ou du processus, ou d'écrire à une
              position qui dépasse le maximum autorisé.

       EINTR  L'appel  système a été interrompu par un signal avant d'avoir pu
              écrire quoi que ce soit ; consultez signal(7).

       EINVAL fd correspond à un objet sur lequel il est impossible  d'écrire.
              Ou  bien  le  fichier  a été ouvert avec l'attribut O_DIRECT, et
              soit l'adresse de buf, soit la valeur de count, soit la position
              actuelle dans le fichier ne sont pas alignées correctement.

       EIO    Une  erreur  d'entrée-sortie bas niveau s'est produite durant la
              modification de l'inœud.

       ENOSPC Le périphérique correspondant à fd n'a plus de place disponible.

       EPIPE  fd est connecté à un tube (pipe)  ou  une  socket  dont  l'autre
              extrémité  est  fermée.  Quand  ceci  se  produit,  le processus
              écrivain reçoit un signal SIGPIPE. (Ainsi la valeur de retour de
              write n'est vue que si le programme intercepte, bloque ou ignore
              ce signal.

       D'autres erreurs peuvent se produire suivant le type d'objet associé  à
       fd.

CONFORMITÉ

       SVr4, BSD 4.3, POSIX.1-2001.

       Sous  SVr4,  un appel write() peut être interrompu, et renvoyer EINTR à
       n'importe quel moment, pas seulement avant l'écriture des données.

NOTES

       Une réussite de write() n'offre aucune  garantie  que  les  données  se
       trouvent   sur  le  disque.  En  fait,  sur  certaines  implémentations
       erronées, elle ne garantit  même  pas  que  l'espace  suffisant  a  été
       réservé  pour  les  données. La seule manière d'être sûr de la réussite
       est d'invoquer fsync(2) après avoir écrit les données.

       Si un write() est interrompu  par  un  gestionnaire  de  signaux  avant
       d'avoir  écrit  quoi  que ce soit, l'appel échoue avec EINTR ; s'il est
       interrompu après avoir écrit au moins  un  octet,  l'appel  réussit  et
       renvoie le nombre d'octets écrits.

VOIR AUSSI

       close(2),  fcntl(2),  fsync(2), ioctl(2), lseek(2), open(2), pwrite(2),
       read(2), select(2), writev(2), fwrite(3)

COLOPHON

       Cette page fait partie de  la  publication  3.32  du  projet  man-pages
       Linux.  Une description du projet et des instructions pour signaler des
       anomalies      peuvent      être       trouvées       à       l'adresse
       <URL:http://www.kernel.org/doc/man-pages/>.

TRADUCTION

       Depuis  2010,  cette  traduction est maintenue à l'aide de l'outil po4a
       <URL:http://po4a.alioth.debian.org/>   par   l'équipe   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'équipe francophone de traduction de Debian (2006-2009).

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