Loading

NOM

       tempnam - Créer un nom de fichier temporaire

SYNOPSIS

       #include <stdio.h>

       char *tempnam(const char *rep, const char *prfixe);

   Exigences  de  macros  de  test  de  fonctionnalités  pour  la  glibc (voir
   feature_test_macros(7)) :

       tempnam() : _BSD_SOURCE || _SVID_SOURCE

       La fonction tempnam() renvoie un pointeur sur un nom de fichier valide,
       en  s’assurant  qu’aucun  fichier  de  ce nom n’existe au moment de son
       invocation. Le nom du fichier commence par le prfixe si celui-ci n’est
       pas  NULL et contient jusqu’à cinq caractères. Le chemin d’accès devant
       le nom du fichier sera obligatoirement « approprié » (ce  qui  implique
       au minimum qu’on puisse y écrire).

       L’ordre  de  recherche  du  répertoire  pour  placer  le fichier est le
       suivant :

       a) Le répertoire indiqué par la  variable  d’environnement  TMPDIR,  si
          elle existe et contient le nom d’un répertoire « approprié ».

       b) Sinon, le répertoire indiqué par l’argument rep, s’il n’est pas NULL
          et est « approprié ».

       c) Sinon, le répertoire défini par P_tmpdir (dans <stdio.h>)  s’il  est
          « approprié ».

       d) Enfin,   un  répertoire  dépendant  de  l’implémentation  (/tmp  par
          exemple).

       La chaîne renvoyée par tempnam() est allouée  avec  malloc(3)  et  doit
       donc être libérée avec free(3).

VALEUR RENVOYÉE

       La fonction tempnam() renvoie un pointeur sur un nom de fichier unique,
       ou NULL si ce nom n’a pas pu être généré.

ERREURS

       ENOMEM Échec de l’allocation de mémoire.

CONFORMITÉ

       SVr4, BSD 4.3, POSIX.1-2001. POSIX.1-2008 marque tempnam() comme  étant
       obsolète.

NOTES

       Bien  que  tempnam()  génère  des  noms  difficiles  à  deviner, il est
       néanmoins possible qu’entre le moment où tempnam() 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).

       SUSv2 ne mentionne pas l’utilisation de TMPDIR, la glibc ne l’emploiera
       que si le programme n’est pas setuid. SVr4 indique  que  le  répertoire
       pour d) est /tmp (ce qui correspond à ce que fait la glibc).

       Comme   la  mémoire  utilisée  pour  le  nom  du  fichier  est  allouée
       dynamiquement, tempnam() est réentrante, et donc sûre dans un  contexte
       multithread, contrairement à tmpnam(3).

       La  fonction tempnam() crée une chaîne différente à chaque fois qu’elle
       est appelée, jusqu’à TMP_MAX  (définie  dans  <stdio.h>)  fois.  Si  on
       l’appelle   plus   de   TMP_MAX   fois,   le   comportement  dépend  de
       l’implémentation.

       tempnam() utilise au plus les cinq premiers octets de prfixe.

       En  cas  d’échec   pour   créer   un   nom   de   fichier   inexistant,
       l’implémentation de tempnam() de la glibc renverra l’erreur EEXIST.

BOGUES

       La    signification   précise   d’« approprié »   est   indéfinie,   la
       détermination des conditions d’accessibilité à un répertoire n’est  pas
       spécifiée.

       N’utilisez jamais cette routine. Utilisez mkstemp(3) ou tmpfile(3) à la
       place.

VOIR AUSSI

       mkstemp(3), mktemp(3), tmpfile(3), tmpnam(3)

COLOPHON

       Cette page fait partie de  la  publication  3.23  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

       Cette  page  de  manuel  a  été  traduite et mise à jour par Christophe
       Blaess <http://www.blaess.fr/christophe/> entre 1996 et 2003, puis  par
       Alain  Portal  <aportal AT univ-montp2 DOT fr> jusqu’en 2006, et mise à
       disposition sur http://manpagesfr.free.fr/.

       Les mises à jour et corrections de la version présente dans Debian sont
       directement         gérées         par         Nicolas         François
       <nicolas.francois@centraliens.net>   et   l’équipe    francophone    de
       traduction de Debian.

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

                                  6 août 2008