Provided by:
manpages-fr-dev_3.27fr1.4-1_all 
NOM
write - Ecrire 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 memoire pointee par
buf, et les ecrit dans le fichier reference par le descripteur fd.
Le nombre d'octets ecrits peut etre inferieur a count par exemple si la
place disponible sur le peripherique est insuffisante, ou la limite de
ressource RLIMIT_FSIZE est atteinte (consultez setrlimit(2)), ou
l'appel est interrompu par un gestionnaire de signal apres avoir ecrit
moins de count octets. (Consultez aussi pipe(7).)
Pour un fichier sur lequel lseek(2) est possible (par exemple un
fichier ordinaire), l'ecriture a lieu a la position courante dans le
fichier, et elle est deplacee du nombre d'octets effectivement ecrits.
Si le fichier etait ouvert avec O_APPEND, la position avant l'ecriture
est a la fin du fichier. La modification de la position et l'ecriture
sont effectuees de facon atomique.
POSIX reclame qu'une lecture avec read(2) effectuee apres le retour
d'une ecriture avec write(), renvoie les nouvelles donnees. Notez que
tous les systemes de fichiers ne sont pas compatibles avec POSIX.
VALEUR RENVOY'EE
write() renvoie le nombre d'octets ecrits (0 signifiant aucune
ecriture), ou -1 s'il echoue, auquel cas errno contient le code
d'erreur.
Si count vaut 0 et si fd correspond a un fichier ordinaire, write()
peut renvoyer un code d'erreur si l'une des erreurs ci-dessous est
detectee. Si aucune erreur n'est detectee, 0 sera renvoye sans autre
effet de bord. Si count est nul et fd est un fichier special, les
resultats sont indefinis.
ERREURS
EAGAIN Le descripteur de fichier fd fait reference a un fichier autre
qu'une socket et a ete marque comme non bloquant (O_NONBLOCK),
et l'ecriture devrait bloquer.
EAGAIN ou EWOULDBLOCK
Le descripteur de fichier fd fait reference a un fichier autre
qu'une socket et a ete marque comme non bloquant (O_NONBLOCK),
et l'ecriture 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 meme valeur. Une application portable
devrait donc tester les deux possibilites.
EBADF fd n'est pas un descripteur de fichier valable, ou n'est pas
ouvert en ecriture.
EDESTADDRREQ
fd fait reference a une socket de datagramme pour laquelle
l'adresse du correspondant n'a pas ete initialisee avec
connect(2).
EFAULT buf pointe en dehors de l'espace d'adressage accessible.
EFBIG Tentative d'ecrire un fichier dont la taille depasse un maximum
dependant de l'implementation ou du processus, ou d'ecrire a une
position qui depasse le maximum autorise.
EINTR L'appel systeme a ete interrompu par un signal avant d'avoir pu
ecrire quoi que ce soit ; consultez signal(7).
EINVAL fd correspond a un objet sur lequel il est impossible d'ecrire.
Ou bien le fichier a ete 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 alignees correctement.
EIO Une erreur d'entree-sortie bas niveau s'est produite durant la
modification de l'inoeud.
ENOSPC Le peripherique correspondant a fd n'a plus de place disponible.
EPIPE fd est connecte a un tube (pipe) ou une socket dont l'autre
extremite est fermee. Quand ceci se produit, le processus
ecrivain recoit 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 associe a
fd.
CONFORMIT'E
SVr4, BSD 4.3, POSIX.1-2001.
Sous SVr4, un appel write() peut etre interrompu, et renvoyer EINTR a
n'importe quel moment, pas seulement avant l'ecriture des donnees.
NOTES
Une reussite de write() n'offre aucune garantie que les donnees se
trouvent sur le disque. En fait, sur certaines implementations
erronees, elle ne garantit meme pas que l'espace suffisant a ete
reserve pour les donnees. La seule maniere d'etre sur de la reussite
est d'invoquer fsync(2) apres avoir ecrit les donnees.
Si un write() est interrompu par un gestionnaire de signaux avant
d'avoir ecrit quoi que ce soit, l'appel echoue avec EINTR ; s'il est
interrompu apres avoir ecrit au moins un octet, l'appel reussit et
renvoie le nombre d'octets ecrits.
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.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 29 aout 2010 WRITE(2)