我有一个程序调用 mkstemp(),用返回的 fd 写入一些内容,然后关闭 fd。我希望保留该文件,直到我自己删除它!使用 rm 命令或其他命令。我的问题是:Linux会在close(fd)后删除这个文件吗?
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>
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)