GNU/Linux >> LINUX-Kenntnisse >  >> Linux

Wann wird eine mit mkstemp() erstellte Datei gelöscht?

löscht Linux diese Datei nach close(fd)?

Nicht automatisch. Sie müssen unlink anrufen auf der Datei manuell. Dies können Sie direkt nach dem Aufruf von mkstemp tun wenn Sie nicht über den Namen auf die Datei zugreifen müssen (d. h. über das Dateisystem), wird sie gelöscht, sobald der Deskriptor geschlossen wird.

Wenn Sie die Datei alternativ namentlich an einen anderen Teil des Codes (oder Prozesses) weitergeben müssen, rufen Sie nicht unlink auf gerade noch.

Hier ist ein Beispiel-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 schließt die FILE* stream, sondern auch den zugrunde liegenden Dateideskriptor, sodass wir close(fd) nicht explizit aufrufen müssen .

Notwendige Header:

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

Linux
  1. Wann wurde die Datei erstellt?

  2. Kodierung einer Zip-Datei?

  3. Eine gelöschte Datei wiederherstellen??

  4. Warnung mit nftw

  5. Dateiberechtigungen mit Git beibehalten

Linux-WC-Befehl mit Beispielen

Erste Schritte mit ls

Digitale Signaturen mit GnuPG

Dateiberechtigungen unter Linux mit Beispiel

Node.js:Prüfen Sie, ob die Datei ein symbolischer Link ist, wenn Sie mit „fs“ über das Verzeichnis iterieren

Plotten Sie die .gnu-Datei mit gnuplot