c-使用file*删除文件



可能重复:
如何删除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;
}

最新更新