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>
menggunakan acak untuk menghasilkan string acak di bash
rmdir gagal karena Perangkat atau sumber daya sibuk