GNU/Linux >> Belajar Linux >  >> Linux

Kapan file yang dibuat dengan mkstemp() dihapus?

akankah Linux menghapus file ini setelah close(fd)?

Tidak secara otomatis. Anda perlu memanggil unlink pada file secara manual. Anda dapat melakukan ini segera setelah memanggil mkstemp jika Anda tidak perlu mengakses file dengan nama (yaitu melalui sistem file) — file tersebut akan dihapus setelah deskriptor ditutup.

Alternatifnya, jika Anda perlu meneruskan file ke bagian lain dari kode (atau proses) dengan nama, jangan panggil unlink dulu.

Berikut adalah contoh alur kerja:

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 menutup FILE* streaming, tetapi juga deskriptor file yang mendasarinya, jadi kita tidak perlu memanggil close(fd) secara eksplisit .

Header yang diperlukan:

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

Linux
  1. Kapan File Dibuat?

  2. Membatalkan Penghapusan File yang Baru Dihapus Di Ext4 Dengan Extundelete?

  3. Ganti Baris Baru Dengan Nul?

  1. Encoding File Zip?

  2. Pulihkan File yang Dihapus??

  3. Izin File di Linux dengan Contoh

  1. Node.js:Periksa apakah file adalah tautan simbolis saat mengulang direktori dengan 'fs'

  2. Plot file .gnu dengan gnuplot

  3. Apakah mv dengan wildcard masih atomik