1MKTEMP(3)                  Linux Programmer's Manual                 MKTEMP(3)
2
3
4

NAME

6       mktemp - make a unique temporary filename
7

SYNOPSIS

9       #include <stdlib.h>
10
11       char *mktemp(char *template);
12
13   Feature Test Macro Requirements for glibc (see feature_test_macros(7)):
14
15       mktemp():
16           Since glibc 2.12:
17               (_XOPEN_SOURCE >= 500) && ! (_POSIX_C_SOURCE >= 200112L)
18                   || /* Glibc since 2.19: */ _DEFAULT_SOURCE
19                   || /* Glibc <= 2.19: */ _SVID_SOURCE || _BSD_SOURCE
20           Before glibc 2.12:
21               _BSD_SOURCE || _SVID_SOURCE || _XOPEN_SOURCE >= 500
22

DESCRIPTION

24       Never use this function; see BUGS.
25
26       The  mktemp()  function generates a unique temporary filename from tem‐
27       plate.  The last six characters of template must be  XXXXXX  and  these
28       are  replaced  with  a string that makes the filename unique.  Since it
29       will be modified, template must not be a string constant, but should be
30       declared as a character array.
31

RETURN VALUE

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

ERRORS

40       EINVAL The last six characters of template were not XXXXXX.
41

ATTRIBUTES

43       For   an   explanation   of   the  terms  used  in  this  section,  see
44       attributes(7).
45
46       ┌──────────┬───────────────┬─────────┐
47Interface Attribute     Value   
48       ├──────────┼───────────────┼─────────┤
49mktemp()  │ Thread safety │ MT-Safe │
50       └──────────┴───────────────┴─────────┘

CONFORMING TO

52       4.3BSD,  POSIX.1-2001.   POSIX.1-2008  removes  the  specification   of
53       mktemp().
54

BUGS

56       Never  use  mktemp().   Some  implementations follow 4.3BSD and replace
57       XXXXXX by the current process ID and a single letter, so that  at  most
58       26  different  names  can be returned.  Since on the one hand the names
59       are easy to guess, and on the other hand there is a race between  test‐
60       ing whether the name exists and opening the file, every use of mktemp()
61       is a security risk.  The race is avoided by mkstemp(3) and mkdtemp(3).
62

SEE ALSO

64       mktemp(1), mkdtemp(3), mkstemp(3), tempnam(3), tmpfile(3), tmpnam(3)
65

COLOPHON

67       This page is part of release 4.16 of the Linux  man-pages  project.   A
68       description  of  the project, information about reporting bugs, and the
69       latest    version    of    this    page,    can     be     found     at
70       https://www.kernel.org/doc/man-pages/.
71
72
73
74GNU                               2017-09-15                         MKTEMP(3)
Impressum