TMPNAM |
Nom temporaire |
---|---|
Langage C++ | cstdio (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.
Remarques
- La fonction tmpnam() génère un nom de fichier unique et l'entrepose dans le tableau pointé par son nom. Le but principal de tmpnam() est de générer un nom de fichier temporaire différent de tout autre fichier dans le répertoire du disque actuel.
- La fonction peut être appelée jusqu'à TMP_MAX de fois. LA constante TMP_MAX est défini dans cstdio, et ce sera au moins 25. Chaque fois que la fonction tmpnam() est appelé, il générera un nouveau nom de fichier temporaire.
- Un pointeur vers nom est retourné en cas de succès; sinon un pointeur null est retourné.
- Retour de la fonction : tmpnam renvoie un pointeur vers une chaîne de caractères contenant le nom du fichier temporaire. Si la génération échoue, elle renvoie un pointeur nul. Il est essentiel de vérifier si le retour est valide avant d'utiliser le nom de fichier, afin d'éviter des erreurs potentielles lors de la création de fichiers.
- Sécurité : L'utilisation de tmpnam comporte des risques de sécurité, car le nom de fichier généré peut être prévisible. Cela ouvre la possibilité d'attaques par détournement de fichier, où un attaquant pourrait créer un fichier avec le même nom avant que le programme ne l'utilise. Pour des raisons de sécurité, il est recommandé d'utiliser tmpfile qui crée un fichier de manière atomique, évitant ainsi ce risque.
- Emplacement des fichiers temporaires : Le fichier temporaire créé par tmpnam est généralement entreposé dans un répertoire spécifique aux fichiers temporaires, souvent /tmp sous Unix/Linux ou un répertoire similaire sous Windows. L'emplacement peut être influencé par les variables d'environnement du système, ce qui peut entraîner des incohérences si le code est exécuté sur différentes machines.
- Utilisation de la mémoire : Le nom du fichier généré par tmpnam est entreposé dans une zone mémoire statique, ce qui signifie que les appels successifs à tmpnam remplaceront la valeur précédemment entreposée. Par conséquent, il est important d'utiliser le nom retourné immédiatement ou de le copier dans une autre variable si vous prévoyez d'effectuer plusieurs appels à tmpnam.
- Portabilité : tmpnam est une fonction standard C++ et est largement supportée sur divers systèmes d'exploitation, ce qui permet une certaine portabilité dans le code. Toutefois, en raison de ses préoccupations en matière de sécurité, son utilisation est souvent déconseillée dans des applications critiques ou dans des environnements où la sécurité est primordiale.
- Alternatives : En raison des problèmes de sécurité et de prévisibilité liés à tmpnam, il est préférable d'utiliser des alternatives comme mkstemp, créant un fichier temporaire avec un nom de fichier unique et sécurisé. L'utilisation de tmpfile est également recommandée, car elle gère automatiquement la création et la suppression de fichiers temporaires.
Exemple
Cet exemple génère un nom de fichier temporaire et l'affiche. Cependant, il est important de garder à l'esprit les risques de sécurité associés à cette fonction :
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.