WRITE |
Écrire |
---|---|
SVr4, 4.3BSD, POSIX.1-2001 | unistd.h |
Syntaxe
ssize_t write(int fd, const void *buf, size_t count); |
Paramètres
Nom | Description |
---|---|
fd | Ce paramètre permet d'indiquer le descripteur de fichier |
buf | Ce paramètre permet d'indiquer le tampon à écrire. |
count | Ce paramètre permet d'indiquer le nombre d'octets que contient le tampon. |
Description
Cette fonction permet d'effectuer des écritures dans un fichier précédemment ouvert référencé par le descripteur de fichier fd. Le nombre d'octets écrits peut être inférieur au nombre si, par exemple, l'espace sur le support physique sous-jacent est insuffisant ou si la limite de ressources RLIMIT_FSIZE est rencontrée ou si l'appel a été interrompu par un gestionnaire de signaux après avoir écrit moins que count octets.
Remarques
- Pour un fichier à rechercher (c'est-à-dire un fichier auquel lseek peut être appliqué, par exemple, un fichier normal), l'écriture a lieu au déplacement de fichier actuel et l'incrément de fichier est incrémenté du nombre d'octets réellement écrits. Si le fichier a été ouvert (avec open) avec O_APPEND, le déplacement de fichier est d'abord défini à la fin du fichier avant son écriture. L'ajustement du déplacement de fichier et l'opération d'écriture sont effectués en tant qu'étape atomique.
- Le POSIX nécessite qu'un read dont l'existence puisse être vérifiée après le retour de write() renvoie les nouvelles données. Notez que tous les systèmes de fichiers ne sont pas conformes à POSIX.
- Un retour réussi de write() ne garantit pas que les données ont été validées sur le disque. En fait, sur certaines implémentations erronées, cette situation ne garantit même pas que l'espace a bien été réservé pour les données. Le seul moyen d'en être sûr est d'appeler fsync après avoir écrit toutes vos données.
- Si write() est interrompu par un gestionnaire de signal avant l'écriture d'octets, l'appel échoue avec l'erreur EINTR; s'il est interrompu après qu'au moins un octet a été écrit, l'appel aboutit et renvoie le nombre d'octets écrits.
- Les codes d'erreurs retournés par la variable «errno» correspondent généralement à ceci :
Constante | Description |
---|---|
EAGAIN | Cette constante permet d'indiquer que la ressource est temporairement indisponible. Sur certaines distribution, cette constante a parfois la même valeur que EWOULDBLOCK. |
EBADF | Cette constante permet d'indiquer que le descripteur de fichier est invalide. |
EDESTADDRREQ | Cette constante permet d'indiquer que l'adresse de destination est requise. |
EDQUOT | Cette constante permet d'indiquer que le quota du disque est dépassé. |
EFAULT | Cette constante permet d'indiquer que l'adresse est invalide. |
EFBIG | Cette constante permet d'indiquer que le fichier est trop gros. |
EINTR | Cette constante permet d'indiquer que l'appel de la fonction a été interrompu. |
EINVAL | Cette constante permet d'indiquer que le paramètre est invalide. |
EIO | Cette constante permet d'indiquer qu'une erreur d'entrée/sortie s'est produite. |
ENOSPC | Cette constante permet d'indiquer qu'il n'y a pas d'espace correspondant dans le périphérique. |
EPIPE | Cette constante permet d'indiquer que le tuyau est arrêté. |
EWOULDBLOCK | Cette constante permet d'indiquer que l'opération devrait avoir des blocs. |
Dernière mise à jour : Dimanche, le 10 décembre 2017