GNU/Linux >> Tutoriels Linux >  >> Linux

Quand un fichier créé avec mkstemp() est supprimé ?

Linux supprimera-t-il ce fichier après la fermeture (fd) ?

Pas automatiquement. Vous devez appeler le unlink sur le fichier manuellement. Vous pouvez le faire immédiatement après avoir appelé le mkstemp si vous n'avez pas besoin d'accéder au fichier par son nom (c'est-à-dire via le système de fichiers) — il sera alors supprimé une fois le descripteur fermé.

Alternativement, si vous devez transmettre le fichier à une autre partie du code (ou processus) par son nom, n'appelez pas unlink pour l'instant.

Voici un exemple de workflow :

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 ferme le FILE* stream, mais aussi le descripteur de fichier sous-jacent, nous n'avons donc pas besoin d'appeler explicitement close(fd) .

En-têtes nécessaires :

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

Linux
  1. Récupérer un fichier juste supprimé sur Ext4 avec Extundelete ?

  2. Remplacer la nouvelle ligne par Nul ?

  3. Encodage d'un fichier Zip ?

  4. Autorisations de fichiers sous Linux avec exemple

  5. Node.js :vérifiez si le fichier est un lien symbolique lors de l'itération sur le répertoire avec 'fs'

Commande Linux WC avec exemples

Démarrer avec ls

Signatures numériques avec GnuPG

Comment remplir un fichier avec FF en utilisant dd ?

Comment obtenir un fichier avec un nom correct lors de la redirection ?

Est-ce que mv avec joker est toujours atomique