MKSTEMP

Section: Manuel du programmeur Linux (3)
Updated: 5 Mai 1999
Index Retour au Menu Principal

 

NOM

mkstemp - Créér un fichier temporaire unique.  

SYNOPSIS

#include <stdlib.h>

int mkstemp (char *template);
 

DESCRIPTION

La fonction mkstemp() engendre un nom de fichier temporaire unique, à partir du motif template. 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 comme un tableau de caractères.

Le fichier est ouvert en mode lecture/écriture et est créé avec les permissions d'accès 0666 (glibc 2.0.6 et précédentes) ou 0600 (glibc 2.0.7 et ultérieures).

Le fichier est ouvert avec l'attribut O_EXCL, garantissant que nous soyons le seul propriétaire du fichier.  

VALEUR RENVOYÉE

La fonction mkstemp() renvoie le descripteur du fichier temporaire créé ou -1 en cas d'erreur.  

ERREURS

EINVAL
Les 6 derniers caractères de template ne sont pas XXXXXX. Dans ce cas, template n'est pas modifié.
EEXIST
Impossible de créer un nom de fichier unique. Le contenu du fichier est imprévisible.
 

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 ne disent rien des modes des fichiers, ainsi les applications doivent s'assurer que la valeur d'umask est correcte avant d'appeler mkstemp.  

CONFORMITÉ

BSD 4.3, POSIX 1003.1-2001  

NOTE

Le prototype se trouve dans <unistd.h> pour libc4, libc5; glibc1. Glibc2 suit les spécifications Single Unix et place le prototype dans <stdlib.h>.  

VOIR AUSSI

mktemp(3), tmpnam(3), tempnam(3), tmpfile(3)

 

TRADUCTION

Christophe Blaess, 1997.



 

Index

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


Time: 22:30:04 GMT, December 19, 2004