NAME |LIBRARY |SYNOPSIS |DESCRIPTION |RETURN VALUE |ERRORS |ATTRIBUTES |STANDARDS |HISTORY |NOTES |BUGS |SEE ALSO |COLOPHON | |
tmpnam(3) Library Functions Manualtmpnam(3)tmpnam, tmpnam_r - create a name for a temporary file
Standard C library (libc,-lc)
#include <stdio.h>[[deprecated]] char *tmpnam(char *s);[[deprecated]] char *tmpnam_r(char *s); Feature Test Macro Requirements for glibc (seefeature_test_macros(7)):tmpnam_r() Since glibc 2.19: _DEFAULT_SOURCE Up to and including glibc 2.19: _BSD_SOURCE || _SVID_SOURCE
Note:avoid using these functions; usemkstemp(3) ortmpfile(3) instead. Thetmpnam() function returns a pointer to a string that is a valid filename, and such that a file with this name did not exist at some point in time, so that naive programmers may think it a suitable name for a temporary file. If the arguments is NULL, this name is generated in an internal static buffer and may be overwritten by the next call totmpnam(). Ifs is not NULL, the name is copied to the character array (of length at leastL_tmpnam) pointed to bys and the values is returned in case of success. The created pathname has a directory prefixP_tmpdir. (BothL_tmpnam andP_tmpdir are defined in<stdio.h>, just like theTMP_MAXmentioned below.) Thetmpnam_r() function performs the same task astmpnam(), but returns NULL (to indicate an error) ifs is NULL.
These functions return a pointer to a unique temporary filename, or NULL if a unique name cannot be generated.
No errors are defined.
For an explanation of the terms used in this section, seeattributes(7). ┌─────────────────────┬───────────────┬──────────────────────────┐ │Interface│Attribute│Value│ ├─────────────────────┼───────────────┼──────────────────────────┤ │tmpnam() │ Thread safety │ MT-Unsafe race:tmpnam/!s │ ├─────────────────────┼───────────────┼──────────────────────────┤ │tmpnam_r() │ Thread safety │ MT-Safe │ └─────────────────────┴───────────────┴──────────────────────────┘
tmpnam() C11, POSIX.1-2008.tmpnam_r() None.
tmpnam() SVr4, 4.3BSD, C89, POSIX.1-2001. Obsolete in POSIX.1-2008.tmpnam_r() Solaris.
Thetmpnam() function generates a different string each time it is called, up toTMP_MAXtimes. If it is called more thanTMP_MAX times, the behavior is implementation defined. Although these functions generate names that are difficult to guess, it is nevertheless possible that between the time that the pathname is returned and the time that the program opens it, another program might create that pathname usingopen(2), or create it as a symbolic link. This can lead to security holes. To avoid such possibilities, use theopen(2)O_EXCLflag to open the pathname. Or better yet, usemkstemp(3) ortmpfile(3). Portable applications that use threads cannot calltmpnam() with a NULL argument if either_POSIX_THREADSor_POSIX_THREAD_SAFE_FUNCTIONSis defined.
Never use these functions. Usemkstemp(3) ortmpfile(3) instead.
mkstemp(3),mktemp(3),tempnam(3),tmpfile(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-17tmpnam(3)Pages that refer to this page:getpid(2), mkdtemp(3), mkstemp(3), mktemp(3), stdio(3), tempnam(3), tmpfile(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. | ![]() |