The tmpnam() 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 argument s is NULL this name is generated in an internal
static buffer and may be overwritten by the next call to tmpnam(). If
s is not NULL, the name is copied to the character array (of length at
least L_tmpnam) pointed to by s and the value s is
returned in case of success.
The path name that is created, has a directory prefix P_tmpdir. (Both
L_tmpnam and P_tmpdir are defined in <stdio.h>,
just like the TMP_MAX mentioned below.)
The tmpnam() function generates a different string each time it is
called, up to TMP_MAX times. If it is called more than TMP_MAX times, the
behaviour is implementation defined.
Portable applications that use threads cannot call tmpnam() with NULL
parameter if either _POSIX_THREADS or _POSIX_THREAD_SAFE_FUNCTIONS is defined.
A POSIX draft proposed to use a function tmpnam_r() defined by