std::tmpnam (3) - Linux Man Pages

std::tmpnam: std::tmpnam

NAME

std::tmpnam - std::tmpnam

Synopsis


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 of unique filenames, but some or all of them may already be in use, and thus not suitable return values.
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 bytes, to be used as a result buffer. If a null pointer is passed, a pointer to an internal static buffer is returned.

Return value


filename if filename was not NULL. Otherwise a pointer to an internal static buffer is returned. If no suitable filename can be generated, NULL is returned.

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


// Run this code


  #include <iostream>
  #include <cstdio>
  #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
tmpfile (function)


temp_directory_path returns a directory suitable for temporary files
                    (function)
(C++17)