MKSTEMP

Section : Manuel du programmeur Linux (3)
Mise à jour de la version anglaise : 19 juin 2008
Index Menu principal  

NOM

mkstemp, mkostemp - Créér 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  

DESCRIPTION

La fonction mkstemp() génère 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 six derniers caractères de template doivent être « XXXXXX » et ils seront alors remplacés par une chaîne rendant ce nom de fichier unique. Comme il sera modifié, template ne doit pas être une chaîne constante, mais devrait être déclaré comme 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 du fichier template est imprévisible.
EINVAL
Les six derniers caractères de template ne sont pas XXXXXX. Dans ce cas, template n'est pas modifié.

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 extention 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, les spécifications POSIX concernant mkstemp() ne disent 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() (ou 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)  

TRADUCTION

Ce document est une traduction réalisée par Christophe Blaess <http://www.blaess.fr/christophe/> le 5 novembre 1996 et révisée le 17 juillet 2008.

L'équipe de traduction a fait le maximum pour réaliser une adaptation française de qualité. La version anglaise la plus à jour de ce document est toujours consultable via la commande : « LANG=C man 3 mkstemp ». N'hésitez pas à signaler à l'auteur ou au traducteur, selon le cas, toute erreur dans cette page de manuel.

 

Index

NOM
SYNOPSIS
DESCRIPTION
VALEUR RENVOYÉE
ERREURS
VERSIONS
CONFORMITÉ
NOTES
VOIR AUSSI
TRADUCTION

Dernière mise à jour : 17 juillet 2008