Sto scrivendo una funzione in C++ che crea una directory temporanea. Tale funzione dovrebbe essere il più portabile possibile, ad es. dovrebbe funzionare con gli ambienti linux, mac e win32. Come lo realizzo?Come creare una directory temporanea in C++?
risposta
mkdtemp(char *template)
http://www.cl.cam.ac.uk/cgi-bin/manpage?3+mkdtemp
Crea una directory temporanea.
Ho seguito il tuo link alla documentazione. Descrive solo come creare un file temporaneo. Quello che è stato chiesto è come creare una directory temporanea. –
@ ErikSjölund sei corretto, ho collegato il comando sbagliato. –
Non esiste una funzione standard per eseguire questa operazione, quindi è necessario compilare diverse implementazioni per ciascuna piattaforma target.
In Windows, ad esempio, è necessario utilizzare la directory temp, che può essere ottenuta da una chiamata a GetTempPath().
La libreria del file system di Boost fornisce funzioni di directory indipendenti dalla piattaforma. Aumenterà un po 'le dimensioni del tuo programma, ma l'uso di Boost è spesso migliore (e spesso più semplice) rispetto al tuo.
http://www.boost.org/doc/libs/1_43_0/libs/filesystem/doc/index.htm
Non voglio introdurre dipendenza da boost solo per quella. – Gatis
versione 3 di Boost Filesystem Biblioteca fornisce la funzione unique_path()
per generare un percorso adatto per la creazione di un file temporaneo o directory.
using namespace boost::filesystem;
path ph = unique_path();
create_directories(ph);
Standard C++ non ha funzioni di manipolazione della directory. –
Lo standard POSIX ha una definizione. Tutti i sistemi operativi moderni hanno un livello di conformità POSIX (incluse le finestre). Quindi la famiglia di funzioni mktemp() è ciò che stai cercando. Ma fai attenzione che sia una vulnerabilità di sicurezza creare una directory temporanea e inserire i file al suo interno. È più sicuro creare direttamente i descrittori di file. –
Cosa succede a getenv() passando "TMP"? – Gatis