mundo - ¿Cómo puedo crear un archivo temporal para escribir en C++ en una plataforma Linux?
hola mundo en linux (7)
En C ++, en Linux, ¿cómo puedo escribir una función para devolver un nombre de archivo temporal que luego puedo abrir para escribir?
El nombre de archivo debe ser lo más único posible, de modo que otro proceso que use la misma función no obtenga el mismo nombre.
La función tmpnam () en la biblioteca estándar C está diseñada para resolver solo este problema. También hay tmpfile (), que devuelve un manejador de archivo abierto (y lo elimina automáticamente cuando lo cierra).
Simplemente debe verificar si el archivo que está tratando de escribir ya existe. Este es un problema de bloqueo. Los archivos también tienen propietarios, por lo que si lo haces bien, el proceso incorrecto no podrá escribir en él.
Utilice una de las funciones estándar de biblioteca "mktemp": mktemp / mkstemp / mkstemps / mkdtemp.
Editar: plain mktemp puede ser inseguro - se prefiere mkstemp.
mktemp debería funcionar o de lo contrario obtener una de las muchas bibliotecas disponibles para generar un UUID.
tmpfile hombre
La función tmpfile () abre un archivo temporal único en modo de lectura / escritura binaria (w + b). El archivo se eliminará automáticamente cuando se cierre o el programa finalice.ote
tmpnam (), o cualquier cosa que le dé un nombre va a ser vulnerable a las condiciones de carrera. Utilice algo diseñado para este propósito que devuelva un identificador, como tmpfile ():
#include <stdio.h>
FILE *tmpfile(void);
El manual GNU libc analiza las diversas opciones disponibles y sus advertencias:
http://www.gnu.org/s/libc/manual/html_node/Temporary-Files.html
Para abreviar, solo se deben usar mkstemp () o tmpfile (), como han mencionado otros.