NAME |LIBRARY |SYNOPSIS |DESCRIPTION |RETURN VALUE |ERRORS |ATTRIBUTES |STANDARDS |HISTORY |BUGS |SEE ALSO |COLOPHON | |
mktemp(3) Library Functions Manualmktemp(3)mktemp - make a unique temporary filename
Standard C library (libc,-lc)
#include <stdlib.h>char *mktemp(char *template); Feature Test Macro Requirements for glibc (seefeature_test_macros(7)):mktemp(): Since glibc 2.12: (_XOPEN_SOURCE >= 500) && ! (_POSIX_C_SOURCE >= 200112L) || /* glibc >= 2.19: */ _DEFAULT_SOURCE || /* glibc <= 2.19: */ _SVID_SOURCE || _BSD_SOURCE Before glibc 2.12: _BSD_SOURCE || _SVID_SOURCE || _XOPEN_SOURCE >= 500
Never use this function; see BUGS. Themktemp() function generates a unique temporary filename fromtemplate. The last six characters oftemplate 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 character array.
Themktemp() function always returnstemplate. If a unique name was created, the last six bytes oftemplate 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, anderrno is set to indicate the error.
EINVALThe last six characters oftemplate were not XXXXXX.
For an explanation of the terms used in this section, seeattributes(7). ┌──────────────────────────────────────┬───────────────┬─────────┐ │Interface│Attribute│Value│ ├──────────────────────────────────────┼───────────────┼─────────┤ │mktemp() │ Thread safety │ MT-Safe │ └──────────────────────────────────────┴───────────────┴─────────┘
None.
4.3BSD, POSIX.1-2001. Removed in POSIX.1-2008.
Never usemktemp(). Some implementations follow 4.3BSD and replace XXXXXX by the current process ID and a single letter, 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 ofmktemp() is a security risk. The race is avoided bymkstemp(3) andmkdtemp(3).
mktemp(1),mkdtemp(3),mkstemp(3),tempnam(3),tmpfile(3),tmpnam(3)
This page is part of theman-pages (Linux kernel and C library user-space interface documentation) project. Information about the project can be found at ⟨https://www.kernel.org/doc/man-pages/⟩. If you have a bug report for this manual page, see ⟨https://git.kernel.org/pub/scm/docs/man-pages/man-pages.git/tree/CONTRIBUTING⟩. This page was obtained from the tarball man-pages-6.15.tar.gz fetched from ⟨https://mirrors.edge.kernel.org/pub/linux/docs/man-pages/⟩ on 2025-08-11. If you discover any rendering problems in this HTML version of the page, or you believe there is a better or more up- to-date source for the page, or you have corrections or improvements to the information in this COLOPHON (which isnot part of the original manual page), send a mail to man-pages@man7.orgLinux man-pages 6.15 2025-05-17mktemp(3)Pages that refer to this page:mktemp(1), mkdtemp(3), mkstemp(3), pmrecord(3), stdio(3), tempnam(3), tmpfile(3), tmpnam(3)
HTML rendering created 2025-09-06 byMichael Kerrisk, author ofThe Linux Programming Interface. For details of in-depthLinux/UNIX system programming training courses that I teach, lookhere. Hosting byjambit GmbH. | ![]() |