Archivos temporales

A menudo, los programas han de usar el almacenamiento temporal en forma de archivos, lo cual puede tener resultados intermedios de un cálculo o representar copias de seguridad de archivo realizadas antes de las operaciones críticas. Por ejemplo, una aplicación de base de datos, podría usar un archivo temporal cuando elimine registros. El archivo recoge las entradas de la base de datos que se han de conservar y después, al final del proceso, el archivo temporal se convierte en una nueva base de datos y se elimina la original.

Este uso tan popular de los archivos temporales tiene un inconveniente oculto. Tiene que tener cautela y comprobar que las aplicaciones eligen un único nombre de archivo para el archivo temporal. Si no lo hacen, habrá un problema. Como Linux es un sistema de multitarea, otro programa podría elegir el mismo nombre y uno interferiría en el otro.

La función tmpnam puede generar un nombre de archivo único:

temporales_tmpnamLa función tmpnam envía un nombre de archivo válido que no comparte ninguno de los archivos existentes. Si la cadena s no es null, también se le escribirá el nombre de archivo. El resto de llamadas a tmpnam invalidarán el almacenamiento estático usado para los valores de retorno, por eso es tan importante usar un parámetro en cadena si se va a llamar a tmpnam en varias ocasiones. Se da por hecho que la cadena contiene, al menos, L_tmpnam (normalmente sobre 20) caracteres de largo, tmpnam se puede solicitar TMP_MAX veces (como mínimo miles de veces) en un único programa, y cada vez generará un nombre de archivo diferente.

Si se va a usar el archivo temporal de inmediato, puede nombrarlo y abrirlo al mismo tiempo usando la función tmpfile. Esto es importante porque otro programa podría crear un archivo con el mismo nombre que el enviado por tmpnam. La función tmpfile evita este problema por completo:

tmpfileLa función tmpfile envía un indicador de flujo que se refiere a un único archivo temporal. El archivo se abre para su lectura y escritura (a través de fopen con w+), y se eliminará automáticamente cuando se hayan cerrado todas las referencias al archivo. tmpfile envía un indicador null y configura errno si se produce un error.

atras

Anuncios

Responder

Introduce tus datos o haz clic en un icono para iniciar sesión:

Logo de WordPress.com

Estás comentando usando tu cuenta de WordPress.com. Cerrar sesión / Cambiar )

Imagen de Twitter

Estás comentando usando tu cuenta de Twitter. Cerrar sesión / Cambiar )

Foto de Facebook

Estás comentando usando tu cuenta de Facebook. Cerrar sesión / Cambiar )

Google+ photo

Estás comentando usando tu cuenta de Google+. Cerrar sesión / Cambiar )

Conectando a %s