Provided by: manpages-fr-dev_4.21.0-2_all bug

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);

   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

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.

       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().

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).
       ┌──────────────────────────────────────────────────────────────────────┬──────────────────────┬─────────┐
       │ InterfaceAttributValeur  │
       ├──────────────────────────────────────────────────────────────────────┼──────────────────────┼─────────┤
       │ 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 lec‐
       ture 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 ap‐
       plications 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

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

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 <tvi‐
       gnaud@mandriva.com>, François Micaux, Alain Portal <aportal@univ-montp2.fr>, Jean-Philippe  Guérard  <fe‐
       vrier@tigreraye.org>,  Jean-Luc Coulon (f5ibh) <jean-luc.coulon@wanadoo.fr>, Julien Cristau <jcristau@de‐
       bian.org>,  Thomas  Huriaux  <thomas.huriaux@gmail.com>,   Nicolas   François   <nicolas.francois@centra‐
       liens.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 à  de‐
       bian-l10n-french@lists.debian.org.

Pages du manuel de Linux 6.03                    5 février 2023                                       mkstemp(3)