NOM
mkstemp, mkostemp - Créer un fichier temporaire unique
SYNOPSIS
#include <stdlib.h>
int mkstemp(char *template);
int mkostemp (char *template, int flags);
Exigences de macros de test de fonctionnalités pour la glibc (voir
feature_test_macros(7)) :
mkstemp() : _BSD_SOURCE || _SVID_SOURCE || _XOPEN_SOURCE >= 500
mkostemp() : _GNU_SOURCE
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.
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).
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 Les six derniers caractères de template ne sont pas XXXXXX.
template n’est pas modifiée.
Ces fonctions peuvent également échouer avec chacune des erreurs
décrites pour open(2).
VERSIONS
mkostemp() est disponible depuis la glibc 2.7.
CONFORMITÉ
mkstemp() : BSD 4.3, POSIX.1-2001. mkostemp() : est une extension 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 (voir 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.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 Florentin Duneau <fduneau@gmail.com> 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> ».