Provided by: manpages-fr-dev_3.65d1p1-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 actuelle 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).

       EDQUOT Le quota de blocs de disque de l'utilisateur sur le  système  de  fichiers  contenant  le  fichier
              correspondant à fd a été atteint.

       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.65 du projet man-pages Linux. Une description du projet et des
       instructions    pour    signaler    des    anomalies    peuvent     être     trouvées     à     l'adresse
       http://www.kernel.org/doc/man-pages/.

TRADUCTION

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

       Christophe       Blaess       <http://www.blaess.fr/christophe/>      (1996-2003),      Alain      Portal
       <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> ».

Linux                                            27 janvier 2013                                        WRITE(2)