可能重复:
如何删除 C 中 FILE* 指向的文件?
我想在C程序结束时删除一个文件,此时文件名早已被遗忘。如果我可以只使用 FILE * 直接删除它或找到文件名然后使用 remove()... 而不必为此记住文件名,那就太好了。
有谁知道可以实现这一目标的任何方法?我在 Windows 系统上,但我需要保持可移植性,所以不能使用任何操作系统特定的东西。
可能重复:
如何删除 C 中 FILE* 指向的文件?
我想在C程序结束时删除一个文件,此时文件名早已被遗忘。如果我可以只使用 FILE * 直接删除它或找到文件名然后使用 remove()... 而不必为此记住文件名,那就太好了。
有谁知道可以实现这一目标的任何方法?我在 Windows 系统上,但我需要保持可移植性,所以不能使用任何操作系统特定的东西。
如果我可以使用 FILE * 直接删除它或找到文件名然后使用 remove()... 而不必为此记住文件名,那就太好了
无法从FILE *
. AFILE *
不一定是真实文件;只是想想popen(3)
例如。
我不知道可移植的方式,但有一个 Linux 版本(可能适用于其他 unice)和一个 Windows 版本:
Linux:一个应该可以readlink()
工作sprintf("/proc/self/fd/%d",fd)
Windows: GetFileInformationByHandleEx()
会给你名称作为结构的一部分(搜索 MSDN,我的脑海中没有详细信息)
例如
#include <stdio.h>
#include <stdlib.h>
void endproc(void){
remove("removeFile.dat");
}
int main(){
atexit(endproc);
return 0;
}