smaže Linux tento soubor po close(fd)?
Ne automaticky. Musíte zavolat na číslo unlink
na soubor ručně. Můžete to udělat ihned po zavolání mkstemp
pokud nepotřebujete přistupovat k souboru podle názvu (tj. přes souborový systém) – bude smazán, jakmile bude deskriptor uzavřen.
Případně, pokud potřebujete předat soubor do jiné části kódu (nebo procesu) podle názvu, nevolejte unlink
zatím.
Zde je příklad pracovního postupu:
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
zavře FILE*
stream, ale také základní deskriptor souboru, takže nemusíme explicitně volat close(fd)
.
Nezbytná záhlaví:
#include <errno.h>
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <unistd.h>
pomocí náhodného vygenerování náhodného řetězce v bash
rmdir selhal z důvodu zaneprázdnění zařízení nebo prostředku