NOM
close - Fermer un descripteur de fichier
SYNOPSIS
#include <unistd.h>
int close(int fd);
close() ferme le descripteur fd, de manière à ce qu’il ne référence
plus aucun fichier, et puisse être réutilisé. Tous les verrouillages
(voir fcntl(2)) sur le fichier qui lui était associé, appartenant au
processus, sont supprimés (quel que soit le descripteur qui fut utilisé
pour obtenir le verrouillage).
Si fd est le dernier descripteur de fichier qui se réfère à une
description de fichier ouvert sous-jacente (voir open(2)), les
ressources associées à la description de fichier ouvert sont libérées.
Si le descripteur était la dernière référence sur un fichier supprimé
avec unlink(2), le fichier est effectivement effacé.
VALEUR RENVOYÉE
S’il réussit, la fonction close() renvoie zéro. En cas d’erreur, il
renvoie -1 et remplit errno avec le code d’erreur.
ERREURS
EBADF Le descripteur de fichier fd est invalide.
EINTR L’appel système close() a été interrompu par un signal ; voir
signal(7).
EIO Une erreur d’entrée-sortie s’est produite.
CONFORMITÉ
SVr4, BSD 4.3, POSIX.1-2001.
NOTES
Ne pas vérifier la valeur de retour de close() est une pratique
courante mais également une grave erreur de programmation. Il est
possible qu’une erreur correspondant à un appel write(2) antérieur ne
soit rapportée que lors du close() final. Ne pas vérifier la valeur de
retour lorsque l’on ferme un fichier peut conduire à une perte
silencieuse de données. Ceci est principalement vrai dans le cas de
systèmes de fichiers NFS, ou avec l’utilisation des quotas de disques.
Une fermeture sans erreur ne garantit pas que les données ont été
vraiment écrites sur le disque, car le noyau repousse les écritures le
plus tard possible. Il n’est pas fréquent qu’un système de fichiers
vide les tampons dès la fermeture d’un flux. Si vous désirez vous
assurer que les informations sont en sûreté sur le disque, utilisez
fsync(2) (mais des considérations matérielles entrent en jeu à ce
moment).
Il est probablement imprudent de fermer des descripteurs de fichier
alors qu’ils peuvent peut-être être utilisés par des appels système
dans d’autres threads du même processus. Puisqu’un descripteur de
fichier peut être réutilisé, il y a des conditions de concurrence
obscures qui peuvent provoquer des effets de bord non désirés.
VOIR AUSSI
fcntl(2), fsync(2), open(2), shutdown(2), unlink(2), fclose(3)
COLOPHON
Cette page fait partie de la publication 3.23 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
Cette page de manuel a été traduite et mise à jour par Christophe
Blaess <http://www.blaess.fr/christophe/> entre 1996 et 2003, puis par
Alain Portal <aportal AT univ-montp2 DOT fr> jusqu’en 2006, et mise à
disposition sur http://manpagesfr.free.fr/.
Les mises à jour et corrections de la version présente dans Debian sont
directement gérées par Julien Cristau <jcristau@debian.org> et l’équipe
francophone de traduction de Debian.
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> ».