Provided by: manpages-fr-dev_4.15.0-9_all bug

NOM

       mkstemp, mkostemp, mkstemps, mkostemps - Créer un fichier temporaire unique

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
               || /* Depuis la glibc 2.12 : */ _POSIX_C_SOURCE >= 200809L
               || /* Versions de la glibc <= 2.19 : */ _SVID_SOURCE || _BSD_SOURCE

       mkostemp():
           _GNU_SOURCE

       mkstemps():
           /* Depuis la glibc 2.19 : */ _DEFAULT_SOURCE
               || /* Versions de la 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 │
       └────────────────────────────────────────────────────────┴──────────────────────┴─────────┘

CONFORMITÉ

       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

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

COLOPHON

       Cette page fait partie de la publication 5.13 du projet man-pages Linux.  Une  description
       du  projet et des instructions pour signaler des anomalies et la dernière version de cette
       page peuvent être trouvées à l'adresse https://www.kernel.org/doc/man-pages/.

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  ⟨https://www.gnu.org/licenses/gpl-3.0.html⟩   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⟩.