std:: tmpnam
| I/O manipulators | ||||
| Print functions (C++23) | ||||
| C-style I/O | ||||
| Buffers | ||||
|
(C++23)
|
||||
|
(
C++98/26*
)
|
||||
|
(C++20)
|
||||
| Streams | ||||
| Abstractions | ||||
| File I/O | ||||
| String I/O | ||||
| Array I/O | ||||
|
(C++23)
|
||||
|
(C++23)
|
||||
|
(C++23)
|
||||
|
(
C++98/26*
)
|
||||
|
(
C++98/26*
)
|
||||
|
(
C++98/26*
)
|
||||
| Synchronized Output | ||||
|
(C++20)
|
||||
| Types | ||||
| Error category interface | ||||
|
(C++11)
|
||||
|
(C++11)
|
| Types and objects | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| Functions | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
Definiert in Header
<cstdio>
|
||
|
char
*
tmpnam
(
char
*
filename
)
;
|
||
Erzeugt einen eindeutigen Dateinamen, der nicht den Namen einer aktuell existierenden Datei trägt, und speichert ihn in der Zeichenkette, auf die filename zeigt. Die Funktion kann bis zu TMP_MAX eindeutige Dateinamen generieren, aber einige oder alle davon könnten bereits in Verwendung sein und sind daher nicht als Rückgabewerte geeignet.
std::tmpnam modifiziert statischen Zustand und ist nicht zwingend threadsicher.
Inhaltsverzeichnis |
Parameter
| filename | - | Zeiger auf das Zeichenarray, das mindestens L_tmpnam Bytes aufnehmen kann, als Ergebnispuffer verwendet wird. Wenn ein Nullzeiger übergeben wird, wird ein Zeiger auf einen internen statischen Puffer zurückgegeben |
Rückgabewert
filename falls filename kein Nullzeiger war. Andernfalls wird ein Zeiger auf einen internen statischen Puffer zurückgegeben. Falls kein geeigneter Dateiname generiert werden kann, wird ein Nullzeiger zurückgegeben.
Hinweise
Obwohl die von
std::tmpnam
generierten Namen schwer zu erraten sind, ist es möglich, dass eine Datei mit diesem Namen von einem anderen Prozess zwischen dem Zeitpunkt erstellt wird, an dem
std::tmpnam
zurückkehrt, und dem Zeitpunkt, an dem dieses Programm versucht, den zurückgegebenen Namen zum Erstellen 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 jedoch weiterhin die Verwendung von
tmpnam
).
POSIX-Systeme definieren zusätzlich die ähnlich benannte Funktion
tempnam
, die die Wahl eines Verzeichnisses bietet (welches standardmäßig auf den optional definierten Makro
P_tmpdir
zurückgreift).
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
Siehe auch
|
erstellt und öffnet eine temporäre, automatisch entfernende Datei
(Funktion) |
|
|
(C++17)
|
gibt ein Verzeichnis für temporäre Dateien zurück
(Funktion) |
|
C-Dokumentation
für
tmpnam
|
|