GNU/Linux >> Linux Esercitazione >  >> Linux

Quando un file creato con mkstemp() viene eliminato?

Linux eliminerà questo file dopo close(fd)?

Non automaticamente. Devi chiamare unlink sul file manualmente. Puoi farlo immediatamente dopo aver chiamato mkstemp se non hai bisogno di accedere al file per nome (ad esempio tramite il file system), verrà eliminato una volta chiuso il descrittore.

In alternativa, se devi passare il file a un'altra parte del codice (o processo) per nome, non chiamare unlink ancora.

Ecco un flusso di lavoro di esempio:

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 chiude il FILE* stream, ma anche il descrittore di file sottostante, quindi non abbiamo bisogno di chiamare esplicitamente close(fd) .

Intestazioni necessarie:

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

Linux
  1. Annullare l'eliminazione di un file appena eliminato su Ext4 con Extundelete?

  2. Sostituire Newline con Nul?

  3. Codifica di un file zip?

  4. Recuperare un file cancellato??

  5. Avviso con nftw

Comando Linux WC con esempi

Firme digitali con GnuPG

Node.js:verifica se il file è un collegamento simbolico durante l'iterazione sulla directory con 'fs'

tar -C con un modello di file con caratteri jolly

Come riempire un file con FF usando dd?

Come ottenere un file con il nome corretto quando viene reindirizzato?