2010-07-31 30 views
6

Estoy escribiendo una función en C++ que crea un directorio temporal. Dicha función debe ser lo más portátil posible, p. debería funcionar en entornos linux, mac y win32. ¿Cómo logro eso?¿Cómo crear un directorio temporal en C++?

+0

Estándar C++ no tiene funciones de manipulación de directorios. –

+3

El estándar POSIX tiene una definición. Todos los sistemas operativos modernos tienen una capa de cumplimiento POSIX (incluidas las ventanas). Entonces, la familia de funciones mktemp() es lo que estás buscando. Pero ten cuidado es una vulnerabilidad de seguridad para crear un directorio temporal y luego colocar archivos en él. Es más seguro crear descripciones de archivos directamente. –

+0

¿Qué pasa con getenv() que pasa "TMP"? – Gatis

Respuesta

0

mkdtemp(char *template)

http://www.cl.cam.ac.uk/cgi-bin/manpage?3+mkdtemp

crea un directorio temporal.

+0

Seguí su enlace de documentación. Solo describe cómo crear un archivo temporal. Lo que se solicitó es cómo crear un directorio temporal. –

+1

@ ErikSjölund estás en lo correcto, he vinculado el comando incorrecto. –

4

Compruebe la función mkdtemphere.

+0

Esto no existe en Windows, hasta donde yo sé. :( –

+0

Supongo que eres escritor ... eliminando ... –

+1

no hay una plataforma independiente para hacerlo en c/C++ estándar, usa GetTempPath y GetTempFileName en Windows – Kane

0

No hay una función estándar para hacer esto, por lo que deberá compilar diferentes implementaciones para cada plataforma a la que se dirija.

En Windows, por ejemplo, debe usar el directorio temporal, que puede obtenerse mediante una llamada a GetTempPath().

13

La versión 3 del sistema de archivos Biblioteca Boost proporciona la función de unique_path() para generar un nombre de ruta adecuada para crear un archivo temporal o directorio.

using namespace boost::filesystem; 

path ph = unique_path(); 
create_directories(ph); 
Cuestiones relacionadas