std::tmpnam
Defined in header <cstdio>
|
||
char
* tmpnam(
char
* filename )
;
|
||
Creates a unique filename that does not name a currently existing file, and stores it in the character string pointed to by filename. The function is capable of generating up to TMP_MAX
std::tmpnam modifies static state and is not required to be thread-safe.
Parameters
filename | - | pointer to the character array capable of holding at least L_tmpnam |
Return value
filename if filename
Notes
Although the names generated by std::tmpnam are difficult to guess, it is possible that a file with that name is created by another process between the moment std::tmpnam returns and the moment this program attempts to use the returned name to create a file. The standard function std::tmpfile and the POSIX function
mkstemp
do not have this problem (creating a unique directory using only the standard C library still requires the use of tmpnam
POSIX systems additionally define the similarly named function tempnam
, which offers the choice of a directory (which defaults to the optionally defined macro P_tmpdir
Example
#include <cstdio> #include <iostream> #include <string> int main() { std::string name1 = std::tmpnam(nullptr); std::cout << "temporary file name: " << name1 << '\n'; char name2[L_tmpnam]; if (std::tmpnam(name2)) std::cout << "temporary file name: " << name2 << '\n'; }
Possible output:
temporary file name: /tmp/fileDjwifs temporary file name: /tmp/fileEv2bfW
See also
creates and opens a temporary, auto-removing file (function) |
|
(C++17)
|
returns a directory suitable for temporary files (function) |
C documentation for tmpnam
|