NOM¶
tmpnam, tmpnam_r - Créer un nom de fichier temporaire
SYNOPSIS¶
#include <stdio.h>
char *tmpnam(char *s);
DESCRIPTION¶
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.
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.44 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> ».