GNU/Linux >> Tutoriales Linux >  >> Linux

¿Cuándo se elimina un archivo creado con mkstemp()?

¿Linux eliminará este archivo después de cerrar (fd)?

No automáticamente. Tienes que llamar al unlink en el archivo manualmente. Puedes hacer esto inmediatamente después de llamar al mkstemp si no necesita acceder al archivo por su nombre (es decir, a través del sistema de archivos), se eliminará una vez que se cierre el descriptor.

Alternativamente, si necesita pasar el archivo a otra parte del código (o proceso) por nombre, no llame a unlink todavía.

Aquí hay un flujo de trabajo de ejemplo:

char filename[] = "tempfile-XXXXXX";
int fd;
if ((fd = mkstemp(filename)) == -1) {
    fprintf(stderr, "Failed with error %s\n", strerror(errno));
    return -1;
}

unlink(filename);

FILE *fh = fdopen(fd, "w");
fprintf(fh, "It worked!\n");
fclose(fh);

fclose cierra el FILE* stream, sino también el descriptor de archivo subyacente, por lo que no necesitamos llamar explícitamente a close(fd) .

Encabezados necesarios:

#include <errno.h>
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <unistd.h>

Linux
  1. ¿Cuándo se creó el archivo?

  2. ¿Recuperar un archivo recién eliminado en Ext4 con Extundelete?

  3. ¿Reemplazar nueva línea con Nul?

  4. ¿Codificación de un archivo zip?

  5. ¿Recuperar un archivo eliminado?

Comando WC de Linux con ejemplos

Comenzando con ls

Firmas digitales con GnuPG

tar -C con un patrón de archivo comodín

¿Cómo rellenar un archivo con FF usando dd?

¿Cómo obtener un archivo con el nombre correcto cuando se redirige?