Namensräume
Varianten
Aktionen

std::tmpnam

Von cppreference.com
< cpp‎ | io‎ | c
 
 
 
C-Style I/O
Typen und Objekte
Funktionen
Datei-Zugriff
Direkte Ein-/Ausgabe
Unformatierte Ein-/Ausgabe
Formatierte Eingabe
(C++11)(C++11)(C++11)    
(C++11)(C++11)(C++11)    
Formatierte Ausgabe
Dateipositionierung
Fehlerbehandlung
Operationen auf Dateien
tmpnam
 
Definiert in Header <cstdio>
char* tmpnam( char* filename );

Erzeugt einen eindeutigen Dateinamen, der keiner derzeit existierenden Datei entspricht, und speichert ihn in der Zeichenkette, auf die von filename gezeigt wird. Die Funktion kann bis zu TMP_MAX eindeutige Dateinamen generieren, aber einige oder alle davon könnten bereits in Gebrauch sein und somit keine geeigneten Rückgabewerte darstellen.

std::tmpnam modifiziert statischen Zustand und muss nicht zwingend threadsicher sein.

Inhalt

[bearbeiten] Parameter

filename - Zeiger auf das Zeichen-Array, das in der Lage ist, mindestens L_tmpnam Bytes aufzunehmen, das als Ergebnisbuffer verwendet wird. Wenn ein Nullzeiger übergeben wird, wird ein Zeiger auf einen internen statischen Buffer zurückgegeben.

[bearbeiten] Rückgabewert

filename, wenn filename kein Nullzeiger war. Andernfalls wird ein Zeiger auf einen internen statischen Buffer zurückgegeben. Wenn kein geeigneter Dateiname generiert werden kann, wird ein Nullzeiger zurückgegeben.

[bearbeiten] Hinweise

Obwohl die von std::tmpnam generierten Namen schwer zu erraten sind, besteht die Möglichkeit, dass eine Datei mit diesem Namen von einem anderen Prozess erstellt wird zwischen dem Moment, an dem std::tmpnam zurückkehrt, und dem Moment, an dem dieses Programm versucht, den zurückgegebenen Namen zur Erstellung einer Datei zu verwenden. Die Standardfunktion std::tmpfile und die POSIX-Funktion mkstemp haben dieses Problem nicht (die Erstellung eines eindeutigen Verzeichnisses nur mit der Standard-C-Bibliothek erfordert immer noch die Verwendung von tmpnam).

POSIX-Systeme definieren zusätzlich die ähnlich benannte Funktion tempnam, die die Wahl eines Verzeichnisses anbietet (welches standardmäßig das optional definierte Makro P_tmpdir ist).

[bearbeiten] Beispiel

#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';
}

Mögliche Ausgabe

temporary file name: /tmp/fileDjwifs
temporary file name: /tmp/fileEv2bfW

[bearbeiten] Siehe auch

erstellt und öffnet eine temporäre, automatisch zu löschende Datei
(function) [bearbeiten]
gibt ein Verzeichnis zurück, das für temporäre Dateien geeignet ist
(Funktion) [bearbeiten]
C-Dokumentation für tmpnam