可能重复:
如何删除C中file*指向的文件?
我想删除C程序末尾的一个文件,此时文件名早已被遗忘。如果我可以直接使用FILE*删除它,或者找到文件名,然后使用remove()。。。而不必为此记住文件名。
有人知道有什么方法可以做到这一点吗?我使用的是Windows系统,但我需要保持可移植性,所以不能使用任何特定于操作系统的东西。
如果我可以使用FILE*直接删除它或找到filename,然后使用remove()。。。而不是必须记住此的文件名
无法从FILE *
中检索文件名。FILE *
不一定是真正的文件;以popen(3)
为例。
我不知道有什么可移植的方法,但有一个Linux版本(可能在其他unice上工作)和一个Windows版本:
Linux:sprintf("/proc/self/fd/%d",fd)
上的readlink()
应该可以使用
Windows:GetFileInformationByHandleEx()
会将名称作为结构的一部分提供给您(搜索MSDN,我脑子里没有详细信息)
E.g
#include <stdio.h>
#include <stdlib.h>
void endproc(void){
remove("removeFile.dat");
}
int main(){
atexit(endproc);
return 0;
}