TMPFILE |
Fichier temporaire |
---|---|
Langage C | stdio.h |
Syntaxe
FILE *tmpfile(void); |
Description
Cette fonction permet d'effectuer la création d'un fichier temporaire.
Algorithme
MODULE TMPFILE() * Générer un nom unique pour le fichier temporaire Obtenir le chemin du répertoire temporaire (par exemple, /tmp ou TMPDIR) RÉPÉTER Générer un identifiant unique (par exemple, horodatage ou aléatoire sécurisé) Concaténer le préfixe "tmp_" avec l'identifiant pour former le nom Construire le chemin complet (répertoire + nom de fichier) JUSQU'À ce que le fichier n'existe pas Essayer d'ouvrir un fichier en mode binaire pour lecture et écriture SI l'ouverture du fichier échoue ALORS RETOURNE NULL (échec) SINON Marquer le fichier pour suppression automatique à la fermeture RETOURNE le pointeur vers le fichier FIN SI |
Remarques
- Définition et utilité : La fonction tmpfile est utilisée pour créer un fichier temporaire unique. Elle fait partie de la bibliothèque standard <stdio.h> et retourne un pointeur de type FILE* représentant le fichier temporaire ouvert en mode binaire. Ce fichier est automatiquement supprimé lorsque le programme se termine ou lorsqu'il est fermé à l'aide de fclose.
- Mode d'ouverture : Les fichiers créés par tmpfile sont généralement ouverts en mode binaire avec autorisation de lecture et d'écriture. Ce mode garantit que vous pouvez lire et écrire dans le fichier sans avoir à rouvrir ou changer de mode. Le fichier temporaire n'a pas de chemin accessible directement dans le système de fichiers, ce qui augmente sa sécurité.
- Comportement sur différentes plateformes : Le comportement de tmpfile dépend du système d'exploitation sous-jacent. Sur certaines plateformes, le fichier est créé dans un répertoire temporaire standard, tel que /tmp sous Unix/Linux ou %TEMP% sous Windows. La fonction utilise les conventions spécifiques du système pour garantir l'unicité des fichiers.
- Sécurité accrue : Comparée à des fonctions comme fopen avec un nom de fichier généré manuellement, tmpfile offre une meilleure sécurité en évitant les conflits de noms et en rendant difficile l'accès au fichier par des processus externes. Cela réduit les risques d'attaques comme les attaques de type "race condition".
- Suppression automatique : Une caractéristique clef de tmpfile est que le fichier temporaire est automatiquement supprimé lorsque le programme se termine normalement, ou si vous fermez explicitement le fichier avec fclose. Cela évite de laisser des fichiers inutiles dans le système et réduit la charge de nettoyage pour le développeur.
- Gestion des erreurs : Si tmpfile échoue à créer un fichier temporaire (par exemple, à cause d'un manque d'espace disque ou d'un problème d'autorisation), elle retourne un pointeur nul (NULL). Il est essentiel de vérifier le retour de la fonction avant d'utiliser le fichier, afin d'éviter des comportements indéfinis dans le programme.
- Utilisations typiques : tmpfile est souvent utilisée pour des données temporaires nécessitant un stockage intermédiaire, comme lors du traitement de grandes quantités de données ou pour des échanges entre différentes parties d'un programme. Elle est particulièrement utile lorsqu'il n'est pas nécessaire de conserver les données après la fin de l'exécution.
- Limites potentielles : Certaines implémentations de tmpfile peuvent ne pas fonctionner correctement si les permissions ou les restrictions du système empêchent la création de fichiers dans les répertoires temporaires standards. De plus, sur certains systèmes, les fichiers temporaires créés ne sont pas anonymes et peuvent être accessibles via des chemins spécifiques, ce qui peut réduire la sécurité attendue.
Voir également
Langage de programmation - C - Référence procédures et fonctions - fopen
Langage de programmation - C - Référence procédures et fonctions - tmpnam
Langage de programmation - C++ - Référence procédures et fonctions - tmpfile
Références
Langage C, Edition Micro-Application, Gehard Willms, 2001, ISBN: 2-7429-2008-0, page 735.
Borland C++ for Windows 4.0, Library Reference, Edition Borland, 1993, Part # BCP1240WW21772, page 280.
Dernière mise à jour : Mardi, le 28 juillet 2015