Me gustaría crear un directorio temporal único en Windows desde algún código C (no C++ o C#). Quiero hacer esto para poder poner algunos archivos temporales en el directorio y luego eliminarlos fácilmente cuando haya terminado (eliminando el directorio recursivamente).Creando un directorio temporal único de C puro en Windows
Estoy buscando esencialmente un equivalente de la función de mkdtemp
de linux. Hay una respuesta de C# here, y las respuestas en this question sugieren usar Boost. Pero dado que estoy usando C, esas soluciones no funcionan para mí.
El mejor que he podido llegar a hasta el momento es el uso de GetTempFileName
seguido por CreateDirectory
, pero el problema no es que si te pido GetTempFileName
para crear un nombre de archivo único, sino que también crea el archivo (que I no quiero, ya que quiero hacer un directorio en su lugar).
En relación con esto, hay GetTempPath
, que devuelve la ubicación de la carpeta temporal del usuario del entorno de las variables - pero como yo quiero crear mi propio directorio que puedo eliminar de forma segura después, todavía tienen que crear un directorio en el interior cualquier ruta que devolvería.
Parece que si quiero un directorio único se cree, voy a tener que crear un archivo temporal, obtener el nombre, borrar, y luego crear un directorio con el mismo nombre - que suena muy desordenado . ¿Alguna otra idea?
La idea en su párrafo final no funcionaría, estaría sujeta a condiciones de carrera. –