mkstemp(3) | Library Functions Manual | mkstemp(3) |
NOM
mkstemp, mkostemp, mkstemps, mkostemps - Créer un fichier temporaire unique
BIBLIOTHÈQUE
Bibliothèque C standard (libc, -lc)
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);
mkstemp() :
_XOPEN_SOURCE >= 500
|| /* glibc >= 2.12: */ _POSIX_C_SOURCE >= 200809L
|| /* glibc <= 2.19: */ _SVID_SOURCE || _BSD_SOURCE
mkostemp():
_GNU_SOURCE
mkstemps():
/* glibc >= 2.19: */ _DEFAULT_SOURCE
|| /* glibc <= 2.19: */ _SVID_SOURCE || _BSD_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éé en mode 0600, c'est-à-dire en lecture et écriture pour le propriétaire seulement. 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 a créé le fichier.
The mkostemp() function is like mkstemp(), with the difference that the following bits—with the same meaning as for open(2)—may be specified in flags: O_APPEND, O_CLOEXEC, and O_SYNC. Note that when creating the file, mkostemp() includes the values O_RDWR, O_CREAT, and O_EXCL in the flags argument given to open(2); including these values in the flags argument given to mkostemp() is unnecessary, and produces errors on some systems.
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 temporaire unique. Le contenu template est alors imprévisible.
- EINVAL
- Pour mkstemp() et mkostemp() : les six derniers caractères de template ne sont pas XXXXXX ; template n'est pas modifié.
- Pour mkstemps() et mkostemps() : template a une longueur inférieure à (6 + suffixlen), ou les six derniers caractères avant le suffixe ne sont pas XXXXXX.
Ces fonctions peuvent également échouer avec une 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.
ATTRIBUTS
Pour une explication des termes utilisés dans cette section, consulter attributes(7).
Interface | Attribut | Valeur |
mkstemp(), mkostemp(), mkstemps(), mkostemps() | Sécurité des threads | MT-Safe |
STANDARDS
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
Dans la version 2.06 de la glibc et auparavant, le fichier était créé en mode 0666, c'est-à-dire en lecture et écriture pour tous les utilisateurs. Cet ancien comportement 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. POSIX.1-2008 ajoute l'obligation de créer ce fichier en mode 0600.
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()).
VOIR AUSSI
TRADUCTION
La traduction française de cette page de manuel a été créée par Christophe Blaess https://www.blaess.fr/christophe/, Stéphan Rafin <stephan.rafin@laposte.net>, Thierry Vignaud <tvignaud@mandriva.com>, François Micaux, Alain Portal <aportal@univ-montp2.fr>, Jean-Philippe Guérard <fevrier@tigreraye.org>, Jean-Luc Coulon (f5ibh) <jean-luc.coulon@wanadoo.fr>, Julien Cristau <jcristau@debian.org>, Thomas Huriaux <thomas.huriaux@gmail.com>, Nicolas François <nicolas.francois@centraliens.net>, Florentin Duneau <fduneau@gmail.com>, Simon Paillard <simon.paillard@resel.enst-bretagne.fr>, Denis Barbier <barbier@debian.org> et David Prévot <david@tilapin.org>
Cette traduction est une documentation libre ; veuillez vous reporter à la GNU General Public License version 3 concernant les conditions de copie et de distribution. Il n'y a aucune RESPONSABILITÉ LÉGALE.
Si vous découvrez un bogue dans la traduction de cette page de manuel, veuillez envoyer un message à debian-l10n-french@lists.debian.org.
5 février 2023 | Pages du manuel de Linux 6.03 |