Provided by: manpages-fr-dev_3.57d1p1-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.57 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> ».