Ich schreibe eine Funktion in C++, die ein temporäres Verzeichnis erstellt. Eine solche Funktion sollte so portabel wie möglich sein, z. Es sollte unter Linux, Mac und Win32-Umgebungen funktionieren. Wie erreiche ich das?Wie erstellt man ein temporäres Verzeichnis in C++?
Antwort
mkdtemp(char *template)
http://www.cl.cam.ac.uk/cgi-bin/manpage?3+mkdtemp
Erstellt ein temporäres Verzeichnis.
Ich folgte Ihrem Dokumentationslink. Es beschreibt nur, wie eine temporäre Datei erstellt wird. Es wurde gefragt, wie ein temporäres Verzeichnis erstellt werden soll. –
@ ErikSjölund Sie sind richtig, ich habe den falschen Befehl verknüpft. –
Überprüfen Sie die mkdtemp
Funktion here.
Unter Windows gibt es das nicht, soweit ich weiß. :( –
Ich denke, Sie sind Schriftsteller ... Löschen ... –
gibt es keine plattformunabhängige Möglichkeit, es in Standard c/C++ zu tun, verwenden Sie GetTempPath und GetTempFileName unter Windows – Kane
Es gibt keine Standardfunktion, daher müssen Sie für jede Plattform, die Sie als Ziel haben, verschiedene Implementierungen kompilieren.
Unter Windows beispielsweise sollten Sie das temp-Verzeichnis verwenden, das durch einen Aufruf von GetTempPath() abgerufen werden kann.
Die Dateisystembibliothek von Boost bietet plattformunabhängige Verzeichnisfunktionen. Es wird Ihre Programmgröße etwas erhöhen, aber Boost ist oft besser (und oft einfacher) als das eigene zu rollen.
http://www.boost.org/doc/libs/1_43_0/libs/filesystem/doc/index.htm
Ich möchte keine Abhängigkeit auf Boost nur für einführen Das. – Gatis
Version 3 von Boost-Filesystem-Bibliothek bietet Funktion unique_path()
für einen Pfadnamen geeignet zum Erzeugen einer temporären Datei oder ein Verzeichnis zu erstellen.
using namespace boost::filesystem;
path ph = unique_path();
create_directories(ph);
Standard C++ hat keine Verzeichnismanipulationsfunktionen. –
Der POSIX-Standard hat eine Definition. Alle modernen Betriebssysteme verfügen über eine POSIX-Compliance-Schicht (einschließlich Windows). Also ist die mktemp() Familie der Funktionen, nach denen Sie suchen. Aber seien Sie vorsichtig, es ist eine Sicherheitslücke, ein temporäres Verzeichnis zu erstellen und dann Dateien darin zu platzieren. Es ist sicherer, Dateideskriptoren direkt zu erstellen. –
Was ist mit getenv() passiert "TMP"? – Gatis