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>