tempnam

TEMPNAM(3)                Manuel du programmeur Linux               TEMPNAM(3)



NOM
       tempnam - Créer un nom de fichier temporaire

SYNOPSIS
       #include <stdio.h>

       char *tempnam(const char *rep, const char *préfixe);

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

       tempnam() : _BSD_SOURCE || _SVID_SOURCE

DESCRIPTION
       N'utilisez jamais cette fonction. Utilisez mkstemp(3) ou tmpfile(3) Ã
       la place.

       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 préfixe 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
       Si l'exécution réussit, la fonction tempnam() renvoie un pointeur sur
       un nom de fichier unique. Elle renvoie NULL si ce nom n'a pas pu être
       généré, et affecte à errno le code de l'erreur.

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 préfixe.

       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.

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

COLOPHON
       Cette page fait partie de la publication 3.70 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 Ã
       <perkamon-fr@traduc.org>.

       Vous pouvez toujours avoir accès à la version anglaise de ce document
       en utilisant la commande « LC_ALL=C man <section> <page_de_man> ».



                               27 février 2014                     TEMPNAM(3)