GNU/Linux >> Znalost Linux >  >> Linux

Když je smazán soubor vytvořený pomocí mkstemp()?

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>

Linux
  1. Obnovit právě smazaný soubor na Ext4 pomocí Extundelete?

  2. Nahradit nový řádek nulou?

  3. Získat čas vytvoření/vytvoření souboru??

  1. Obnovit smazaný soubor??

  2. Oprávnění souborů v Linuxu s příkladem

  3. Zachování oprávnění k souboru s Git

  1. Chyba segmentace při vytvoření Qt QApplication s new

  2. tar -C se vzorem souboru zástupných znaků

  3. Jak podložit soubor pomocí FF pomocí dd?