我有一个调用 mkstemp() 的程序,用返回的 fd 写一些东西,然后关闭 fd。我希望文件一直保留到我自己删除它为止!使用诸如 rm 命令之类的东西。我的问题是:Linux 在 close(fd) 后会删除这个文件吗?
最佳答案
will Linux delete this file after 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>
关于c - 当删除使用 mkstemp() 创建的文件时?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32445579/