#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 (consulter feature_test_macros(7)) :
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
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.
La fonction mkostemp() agit comme mkstemp(), à la différence que les bits suivants — avec la même signification que pour open(2) — peuvent être définis dans flags : O_APPEND, O_CLOEXEC et O_SYNC. Remarquez qu’en créant le fichier, mkostemp() contient les valeurs O_RDWR, O_CREAT et O_EXCL dans l’argument flags donné à open(2) ; inclure ces valeurs dans l’argument flags donné à mkostemp() n’est pas nécessaire et produit des erreurs sur certains systèmes.
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().
Ces fonctions peuvent également échouer avec une des erreurs décrites pour open(2).
Interface | Attribut | Valeur |
mkstemp(), mkostemp(), mkstemps(), mkostemps() | Sécurité des threads | MT-Safe |
mkstemps() : non standard, mais existe sur plusieurs autres systèmes.
mkostemp() et mkostemps() sont des extensions de la glibc.
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()).
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 à