Wie kann man eine temporäre Datei erzeugen?
-
Hallo!
Wie kann man eine temporäre Datei erzeugen? Bei Ansi C gab es für *FILE "tmpfile()". Gibt es so was auch für C++ mit fstream?
Mir würde schon reichen, wenn ich einen Namen für eine noch nicht exestierende Tempdatei bekäme.
char *TempName = createtempname(); //z.B. C:\Windows\Temp\A875ZTRB.tmp
Gibt es so eine Art createtempname()?
Viele Grüße
pmw
-
tmpfile war im Wesentlichen ein fopen auf ein tmpnam . Die letzte Funktion generiert Dir freundlicherweise auch in C++ Namen für diesen Zweck (mit den verbundenen Sicherheitsproblemen).
-
Ich habe jetzt eine Methode gefunden:
char *name = tempnam("","");
Wie kann man an "name" noch ".tmp" dran hängen?
-
Die Funktion ist aber problematisch
Manual page tempnam(3) schrieb:
The precise meaning of `appropriate' is undefined; it is unspecified
how accessibility of a directory is determined. Never use this func-
tion. Use tmpfile(3) instead.
-
In tempnam darf keine Zahl stehen!!! Also ist tempnam(3) nicht möglich. In deinem englischen Text steht tmpfile(3) (NICHT tmpNAM!!!). Aber leider arbeitet tmpfile nicht mit fstream zusammen.
Ich kann nicht nachvollziehen warum man tempnam nicht benutzen soll. Es funktioniert bei mir eigendlich ganz gut. Das einizige, was ich nicht schaffe, ist eine Endung ".tmp" an dem Namen dranzuhängen.
-
pmw schrieb:
In tempnam darf keine Zahl stehen!!! Also ist tempnam(3) nicht möglich.
Das ist eine unter Unix übliche Notation um Dokumentationen (man pages) nach bestimmten Kategorien einzusortieren.
In deinem englischen Text steht tmpfile(3) (NICHT tmpNAM!!!).
Es steht da auch was von tmpnam und tempnam, nicht aber tmpNAM, das stimmt. Hast Du den Text gelesen?
-
Ich versteh nur Bahnhof. Warum soll man nicht tempnam benutzen? Wie funktioniert tmpnam? Am meisten würde mir ein Beispiel bringen.
Ich habe den Text gelesen, aber nicht wirklich verstanden.
char *name = IrgendEine FunktionDieEinenTempNamenErzeugt;
-
-
Leider kann ich (fast) kein Englisch