<ブロック引用>
Linux
Linux は close(fd) 後にこのファイルを削除しますか?
自動的ではありません。 unlink
を呼び出す必要があります 手動でファイルに。 mkstemp
を呼び出した直後にこれを行うことができます 名前で (つまり、ファイル システム経由で) ファイルにアクセスする必要がない場合 — 記述子が閉じられると削除されます。
または、ファイルをコード (またはプロセス) の別の部分に名前で渡す必要がある場合は、unlink
を呼び出さないでください。
ワークフローの例:
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
FILE*
を閉じます ストリームだけでなく、基になるファイル記述子も含まれるため、明示的に close(fd)
を呼び出す必要はありません .
必要なヘッダー:
#include <errno.h>
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <unistd.h>