mat*_*scp 6 c linux temporary-files
我有一个调用mkstemp()的程序,写了一些返回fd的东西,然后关闭fd.我希望文件保留,直到我自己删除它!使用rm命令等等.我的问题是:Linux会在关闭后删除此文件(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);
Run Code Online (Sandbox Code Playgroud)
fclose关闭FILE*流,还关闭基础文件描述符,因此我们不需要显式调用close(fd)。
必要的标题:
#include <errno.h>
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <unistd.h>
Run Code Online (Sandbox Code Playgroud)