0

可能重复:
如何删除 C 中 FILE* 指向的文件?

我想在C程序结束时删除一个文件,此时文件名早已被遗忘。如果我可以只使用 FILE * 直接删除它或找到文件名然后使用 remove()... 而不必为此记住文件名,那就太好了。

有谁知道可以实现这一目标的任何方法?我在 Windows 系统上,但我需要保持可移植性,所以不能使用任何操作系统特定的东西。

4

3 回答 3

3

如果我可以使用 FILE * 直接删除它或找到文件名然后使用 remove()... 而不必为此记住文件名,那就太好了

无法从FILE *. AFILE *不一定是真实文件;只是想想popen(3)例如。

于 2012-08-21T14:07:53.193 回答
1

我不知道可移植的方式,但有一个 Linux 版本(可能适用于其他 unice)和一个 Windows 版本:

Linux:一个应该可以readlink()工作sprintf("/proc/self/fd/%d",fd)

Windows: GetFileInformationByHandleEx()会给你名称作为结构的一部分(搜索 MSDN,我的脑海中没有详细信息)

于 2012-08-21T14:13:45.503 回答
1

例如

#include <stdio.h>
#include <stdlib.h>

void endproc(void){
    remove("removeFile.dat");
}

int main(){
    atexit(endproc);
    return 0;
}
于 2012-08-21T14:19:03.720 回答