TMPNAM |
Nom temporaire |
---|---|
Langage C | stdio.h |
Syntaxe
char *tmpnam(char *nom); |
Paramètres
Nom | Description |
---|---|
nom | Ce paramètre permet d'indiquer le nom de fichier à utiliser |
Description
Cette fonction permet de choisir le nom de création d'un fichier temporaire.
Algorithme
MODULE TMPNAM(s) SI s est NULL ALORS Allouer un espace pour une chaîne statique de longueur maximale définie (L_tmpnam) Utiliser cette chaîne pour stocker le nom temporaire SINON Utiliser la chaîne pointée par s pour entreposer le nom temporaire FIN SI * Générer un nom unique basé sur : Un répertoire temporaire Un identifiant unique (horodatage, compteur, ou aléatoire) S'assurer que le nom est unique en vérifiant qu'aucun fichier avec ce nom n'existe RETOURNE un pointeur vers la chaîne contenant le nom temporaire |
Remarques
- Définition et utilité : La fonction tmpnam génère un nom de fichier temporaire unique, utilisable pour créer un fichier temporaire sans risque de conflit avec d'autres fichiers. Elle fait partie de la bibliothèque standard <stdio.h>. Le prototype est char *tmpnam(char *nom);, et elle retourne une chaîne de caractères contenant un nom unique.
- Paramètre facultatif : Si le paramètre nom est non nul, le nom temporaire généré est entreposé dans le tableau pointé par nom, devant être suffisamment grand (au moins L_tmpnam caractères). Si nom est nul, le nom généré est entreposé dans une zone mémoire statique interne à la fonction, qui peut être écrasée par des appels ultérieurs à tmpnam.
- Pas de création de fichier : La fonction tmpnam ne crée pas réellement un fichier temporaire, elle se contente de générer un nom unique. Cela signifie que le fichier doit être créé ultérieurement à l'aide d'une fonction comme fopen, ce qui peut introduire des vulnérabilités de type race condition si d'autres processus accèdent au même nom.
- Problèmes de sécurité : L'utilisation de tmpnam est déconseillée dans les nouveaux programmes en raison des risques de sécurité liés à des attaques potentielles entre le moment où le nom est généré et où le fichier est effectivement créé. Les standards modernes recommandent d'utiliser des alternatives comme mkstemp, créant directement le fichier.
- Dépendance à L_tmpnam : La constante L_tmpnam définie dans <stdio.h> spécifie la taille minimale du tableau nécessaire pour entreposer un nom temporaire généré par tmpnam. Bien que cette constante soit définie par la norme, sa valeur exacte peut varier selon les plateformes.
- Portabilité et comportement : Le comportement de tmpnam dépend du système d'exploitation sous-jacent. Par exemple, sur les systèmes Unix, les noms générés sont généralement situés dans des répertoires comme /tmp, tandis que sur Windows, ils peuvent être placés dans des répertoires tels que %TEMP%. Cette variabilité peut affecter la portabilité.
- Utilisation dans des environnements multi-processus léger : Si nom est nul, tmpnam utilise une zone mémoire statique partagée pour entreposer le nom généré. Cela rend la fonction non sûre dans un contexte multi-processus léger, car des appels simultanés peuvent entraîner des conflits ou des résultats incorrects.
- Applications pratiques : Malgré ses limites, tmpnam peut être utilisée dans des programmes simples ou dans des scripts ne nécessitant pas une sécurité stricte. Par exemple, elle est utile pour générer des noms pour des fichiers temporaires à des fins de test ou pour des tâches de courte durée où la sécurité et la concurrence ne sont pas des préoccupations majeures.
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 - tmpfile
Langage de programmation - C++ - Référence procédures et fonctions - tmpnam
Langage de programmation - C pour Linux - Référence procédures et fonctions - tmpnam
Langage de programmation - C pour Unix - Référence procédures et fonctions - tmpnam
Langage de programmation - Quick C - Référence procédures et fonctions - tmpnam
Langage de programmation - Turbo C - Référence procédures et fonctions - tmpnam
Langage de programmation - Symantec C++ - Référence procédures et fonctions - tmpnam
Langage de programmation - Visual C++ - Référence procédures et fonctions - tmpnam
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 281.