NOM¶
tmpnam, tmpnam_r - Créer un nom de fichier temporaire
SYNOPSIS¶
#include <stdio.h>
char *tmpnam(char *s);
DESCRIPTION¶
Note: évitez d'utiliser
tmpnam(). Utilisez
mkstemp(3) ou
tmpfile(3) à la place.
La fonction
tmpnam() renvoie un pointeur sur une chaîne qui
représente un nom de fichier valide, qui n'existait pas quelques
instants auparavant. 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¶
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¶
Aucune erreur n'est définie.
ATTRIBUTS¶
Multithreading (voir pthreads(7))¶
La fonction
tmpnam() est sûre dans un contexte multithread avec
exceptions. Elle n’est pas sûre dans un contexte multithread si
appelées avec un paramètre NULL.
La fonction
tmpnam_r() est sûre dans un contexte multithread.
SVr4, BSD 4.3, C89, C99, POSIX.1-2001. POSIX.1-2008 marque
tmpnam() comme étant obsolète.
NOTES¶
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 difficiles à
deviner, il est néanmoins possible qu'entre le moment où
tmpnam() a renvoyé un nom de fichier, et le moment où le
programme crée effectivement ce fichier, un autre programme ait
déjà créé ce fichier avec
open(2) ou comme
un lien symbolique. Ceci peut occasionner des failles de
sécurité. Pour éviter ces problèmes, utilisez
l'option
O_EXCL d'
open(2) lors de l'ouverture du fichier. Ou
mieux encore, 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 de la glibc,
définissez
_SVID_SOURCE ou
_BSD_SOURCE (avant d'inclure
tout fichier d'en‐tête).
BOGUES¶
N'utilisez jamais cette routine. Utilisez
mkstemp(3) ou
tmpfile(3)
à la place.
VOIR AUSSI¶
mkstemp(3),
mktemp(3),
tempnam(3),
tmpfile(3)
COLOPHON¶
Cette page fait partie de la publication 3.65 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¶
Depuis 2010, cette traduction est maintenue à l'aide de l'outil po4a
<
http://po4a.alioth.debian.org/> par l'équipe de traduction
francophone au sein du projet perkamon
<
http://perkamon.alioth.debian.org/>.
Christophe Blaess <
http://www.blaess.fr/christophe/> (1996-2003), Alain
Portal <
http://manpagesfr.free.fr/> (2003-2006). Nicolas François
et l'équipe francophone de traduction de Debian (2006-2009).
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> ».