tmpnam   Début   Suivant   Sommaire   Préc.page.lue   Accueil
Section: Manuel du programmeur Linux (3)
Updated: 15 novembre 2003
Sommaire  



NOM   Début   Précédent   Suivant   Sommaire   Préc.page.lue   Accueil
tmpnam, tmpnam_r - Créer un nom de fichier temporaire  



SYNOPSIS   Début   Précédent   Suivant   Sommaire   Préc.page.lue   Accueil
#include <stdio.h>

char *tmpnam (char *s);
 



DESCRIPTION   Début   Précédent   Suivant   Sommaire   Préc.page.lue   Accueil
La fonction tmpnam() renvoie un pointeur sur une chaîne qui représente un nom de fichier valide, qui n'existait pas il y a quelques instants. Ainsi, un programmeur naïf peut croire qu'il s'agit d'un nom correct pour créer un fichier temporaire. Si l'argument s est NULL, ce nom est stocké dans un tampon interne qui pourra être écrasé lors du prochain appel à tmpnam(). Si s est non NULL, le nom y est copié (le tampon doit faire au moins L_tmpnam octets ) et la valeur de s est renvoyée si la fonction réussit.

Le nom de fichier qui est créé est préfixé par P_tmpdir. (Les constantes L_tmpnam et P_tmpdir sont définies dans <stdio.h> comme TMP_MAX mentionné plus bas).  




VALEUR RENVOYÉE   Début   Précédent   Suivant   Sommaire   Préc.page.lue   Accueil
La fonction tmpnam() renvoie un pointeur sur un nom de fichier temporaire unique, ou NULL si l'unicité n'a pas pu être assurée.  



ERREURS   Début   Précédent   Suivant   Sommaire   Préc.page.lue   Accueil
Aucune erreur n'est définie.  



CONFORMITÉ   Début   Précédent   Suivant   Sommaire   Préc.page.lue   Accueil
SVr4, BSD 4.3, C89, C99, POSIX.1-2001.  



NOTES   Début   Précédent   Suivant   Sommaire   Préc.page.lue   Accueil
La fonction tmpnam() engendre une nouvelle chaîne à chaque appel, jusqu'à TMP_MAX fois. Si on l'invoque plus de TMP_MAX fois, le comportement dépend de l'implémentation.

Bien que tmpnam() génère des noms qui soient dificiles à deviner, il est néanmoins possible qu'entre le moment où tmpnam() renvoie le nom du chemin et le moment où le programme l'ouvre, un autre programme a pu créer ce même nom de chemin avec open(2), ou l'avoir créer sous forme de lien symbolique. Cela peut conduire à des trous de sécurité. Pour éviter de telles possibilités, utilisez l'attribut O_EXCL de open(2) pour ouvrir le nom du chemin. Ou encore mieux, utilisez mkstemp(3) ou tmpfile(3).

Les applications portables qui utilisent les threads ne peuvent pas appeler tmpnam() avec un paramètre NULL si _POSIX_THREADS ou _POSIX_THREAD_SAFE_FUNCTIONS sont définies.

Un brouillon POSIX proposait l'utilisation d'une fonction tmpnam_r() définie par

char *tmpnam_r(char *s) {
    return s ? tmpnam(s) : NULL;
}

apparemment comme une précaution pour ne pas utiliser NULL. Quelques systèmes l'implémentent. Pour obtenir le prototype glibc de cette fonction, définir _SVID_SOURCE ou _BSD_SOURCE avant d'inclure <stdio.h>.  




BOGUES   Début   Précédent   Suivant   Sommaire   Préc.page.lue   Accueil
N'utilisez jamais cette routine. Utilisez mkstemp(3) ou tmpfile(3) à la place.  



VOIR AUSSI   Début   Précédent   Suivant   Sommaire   Préc.page.lue   Accueil
mkstemp(3), mktemp(3), tempnam(3), tmpfile(3)  



TRADUCTION   Début   Précédent   Suivant   Sommaire   Préc.page.lue   Accueil

Ce document est une traduction réalisée par Christophe Blaess <http://www.blaess.fr/christophe/> le 2 décembre 1996 et révisée le 6 juin 2008.

L'équipe de traduction a fait le maximum pour réaliser une adaptation française de qualité. La version anglaise la plus à jour de ce document est toujours consultable via la commande : « LANG=C man 3 tmpnam ». N'hésitez pas à signaler à l'auteur ou au traducteur, selon le cas, toute erreur dans cette page de manuel.


 



Sommaire   Début   Suivant   Sommaire   Préc.page.lue   Accueil
NOM
SYNOPSIS
DESCRIPTION
VALEUR RENVOYÉE
ERREURS
CONFORMITÉ
NOTES
BOGUES
VOIR AUSSI
TRADUCTION

Ce document a été créé par man2html suivi de man2html.pl, le 17/10/2008 17:49:38, en utilisant les pages de 'man'.
 

Valid HTML 4.01 Transitional