Provided by: manpages-fr-dev_3.65d1p1-1_all bug

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.

CONFORMITÉ

       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> ».

                                                 27 février 2014                                       TMPNAM(3)