MKTEMP(3)                 (2017-09-15)                  MKTEMP(3)

     NAME
          mktemp - make a unique temporary filename

     SYNOPSIS
          #include <stdlib.h>

          char *mktemp(char *template);

     Feature Test Macro Requirements for glibc (see
     feature_test_macros(7)):

          mktemp():
              Since glibc 2.12:
                  (_XOPEN_SOURCE >= 500) && !
                  (_POSIX_C_SOURCE >= 200112L)
                      || /* Glibc since 2.19: */ _DEFAULT_SOURCE
                      || /* Glibc <= 2.19: */ _SVID_SOURCE ||
                  _BSD_SOURCE
              Before glibc 2.12:
                  _BSD_SOURCE || _SVID_SOURCE || _XOPEN_SOURCE >= 500

     DESCRIPTION
          Never use this function; see BUGS.

          The mktemp() function generates a unique temporary  filename
          from  template.  The last six characters of template must be
          XXXXXX and these are replaced with a string that  makes  the
          filename  unique.   Since it will be modified, template must
          not be a string constant, but should be declared as a  char-
          acter array.

     RETURN VALUE
          The mktemp() function always returns template.  If a  unique
          name  was  created, the last six bytes of template will have
          been modified in such a  way  that  the  resulting  name  is
          unique (i.e., does not exist already) If a unique name could
          not be created, template is made an empty string, and  errno
          is set to indicate the error.

     ERRORS
          EINVAL
               The last six characters of template were not XXXXXX.

     ATTRIBUTES
          For an explanation of the terms used in  this  section,  see
          attributes(7).     allbox;    lb    lb    lb    l    l    l.
          Interface Attribute Value    T{     mktemp()     T}   Thread
          safety  MT-Safe

     CONFORMING TO

     Page 1                         GNU              (printed 5/25/22)

     MKTEMP(3)                 (2017-09-15)                  MKTEMP(3)

          4.3BSD, POSIX.1-2001.  POSIX.1-2008 removes  the  specifica-
          tion of mktemp().

     BUGS
          Never use mktemp().  Some implementations follow 4.3BSD  and
          replace  XXXXXX  by the current process ID and a single let-
          ter, so that at most 26 different  names  can  be  returned.
          Since  on  the  one hand the names are easy to guess, and on
          the other hand there is a race between testing  whether  the
          name exists and opening the file, every use of mktemp() is a
          security risk.   The  race  is  avoided  by  mkstemp(3)  and
          mkdtemp(3).

     SEE ALSO
          mktemp(1), mkdtemp(3), mkstemp(3),  tempnam(3),  tmpfile(3),
          tmpnam(3)

     COLOPHON
          This page is part of release 5.10  of  the  Linux  man-pages
          project.   A  description  of the project, information about
          reporting bugs, and the latest version of this page, can  be
          found at https://www.kernel.org/doc/man-pages/.

     Page 2                         GNU              (printed 5/25/22)