MKSTEMP(3)

NOM
mkstemp, mkostemp, mkstemps, mkostemps - Créer un fichier temporaire unique

SYNOPSIS
#include <stdlib.h>

int mkstemp(char *template);

int mkostemp(char *template, int flags);

int mkstemps(char *template, int suffixlen);

int mkostemps(char *template, int suffixlen, int flags);

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

mkstemp() :
    _BSD_SOURCE || _SVID_SOURCE || _XOPEN_SOURCE >= 500 || _XOPEN_SOURCE && _XOPEN_SOURCE_EXTENDED
    || /* Depuis la glibc 2.12 : */ _POSIX_C_SOURCE >= 200112L

mkostemp() : _GNU_SOURCE
mkstemps() : _BSD_SOURCE || _SVID_SOURCE
mkostemps() : _GNU_SOURCE

DESCRIPTION
La fonction mkstemp() engendre un nom de fichier temporaire unique, à partir du motif template, crée et ouvre le fichier, et renvoie un descripteur de fichier ouvert pour ce fichier. Les 6 derniers caractères de template doivent être XXXXXX, et ils seront remplacés par une chaîne rendant le nom de fichier unique. Comme il sera modifié, template ne doit pas être une chaîne constante, mais un tableau de caractères. Le fichier est créé avec les permissions 0600, c'est-à-dire lecture et écriture pour le propriétaire seulement (dans la version 2.06 de la glibc et antérieures, le fichier était créé avec les permissions 0666, c'est-à-dire lecture et écriture pour tous les utilisateurs). Le descripteur de fichier renvoyé fournit les accès en lecture et en écriture sur le fichier. Le fichier est ouvert avec l'attribut O_EXCL de open(2), garantissant que l'appelant soit le processus qui ait créé le fichier. La fonction mkostemp() agit comme mkstemp(), à la différence que les attributs, comme pour open(2), peuvent être définis dans flags (c'est-à-dire, O_APPEND, O_SYNC). La fonction mkstemps() agit comme mkstemp(), sauf que la chaîne dans template contient un suffixe de suffixlen caractères. Ainsi, template est de la forme préfixeXXXXXXsuffixe, et la chaîne XXXXXX est modifiée comme dans mkstemp(). La fonction mkostemps() est à mkstemps() ce que mkostemp() est à mkstemp().

VALEUR RENVOYÉE
Si elles réussissent, ces fonctions renvoient le descripteur du fichier temporaire créé ou -1 si elles échouent, auquel cas errno contient le code d'erreur.

ERREURS

EEXIST
    Impossible de créer un nom de fichier unique. Le contenu template est imprévisible.

EINVAL
    Pour mkstemp() and mkostemp() : les six derniers caractères de template ne sont pas XXXXXX ; template n'est pas modifiée.

    Pour mkstemps() et mkostemps() : template a une longueur inférieure à (6 + suffixlen), ou les 6 derniers caractères avant le suffixe ne sont pas XXXXXX.

Ces fonctions peuvent également échouer avec chacune des erreurs décrites pour open(2).

VERSIONS
mkostemp() est disponible depuis la glibc 2.7. mkstemps() et mkostemps() sont disponibles depuis la glibc 2.11.

CONFORMITÉ
mkstemp() : 4.3BSD, POSIX.1-2001. mkstemps() : non standard, mais existe sur plusieurs autres systèmes. mkostemp() et mkostemps() sont des extensions de la glibc.

NOTES
L'ancien comportement (créer les fichiers avec le mode 0666) est un trou de sécurité potentiel, surtout depuis que les autres dérivés UNIX utilisent le mode 0600 et quelqu'un risque d'oublier ce détail en effectuant un portage de programme. Plus généralement, la spécification POSIX de mkstemp() ne dit rien des modes des fichiers, ainsi les applications doivent s'assurer que la valeur du masque de mode de création de fichiers (consultez umask(2)) est correcte avant d'appeler mkstemp() (et mkostemp()). Le prototype de mktemp() se trouve dans <unistd.h> pour libc4, libc5, glibc1. Glibc2 suit POSIX.1 et possède le prototype dans <stdlib.h>.

VOIR AUSSI
mkdtemp(3), mktemp(3), tempnam(3), tmpfile(3), tmpnam(3)

COLOPHON
Cette page fait partie de la publication 3.40 du projet man-pages Linux. Une description du projet et des instructions pour signaler des anomalies peuvent être trouvées à l'adresse <URL:http://www.kernel.org/doc/man-pages/>.

TRADUCTION
Depuis 2010, cette traduction est maintenue à l'aide de l'outil po4a <URL:http://po4a.alioth.debian.org/> par l'équipe de traduction francophone au sein du projet perkamon <URL:http://perkamon.alioth.debian.org/>.

Christophe Blaess <URL:http://www.blaess.fr/christophe/> (1996-2003), Alain Portal <URL:http://manpagesfr.free.fr/> (2003-2006). Florentin Duneau 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> ».