可能重复: in C?
我想在C程序的末尾删除一个文件,这时文件名已经被遗忘了。如果我只需要使用文件*直接删除它或者找到文件名,然后使用remove().而不是要记住这个文件名。
有人知道有什么办法可以做到这一点吗?我在Windows系统上,但我需要维护可移植性,这样就不能使用任何特定于操作系统的东西。
发布于 2012-08-21 14:07:53
如果我只需要使用文件*直接删除它或找到文件名,然后使用remove().而不是要记住这个文件名
无法从FILE *检索文件名。FILE *不一定是一个真正的文件;例如,只需考虑popen(3)。
发布于 2012-08-21 14:13:45
我不知道一种可移植的方法,但是有一个Linux版本(它可能在其他unices上工作)和一个Windows版本:
Linux:readlink() on sprintf("/proc/self/fd/%d",fd)应该能工作
Windows:GetFileInformationByHandleEx()将作为结构的一部分给出名称(搜索MSDN,在我的脑海中没有详细信息)
发布于 2012-08-21 14:19:03
E.g
#include <stdio.h>
#include <stdlib.h>
void endproc(void){
remove("removeFile.dat");
}
int main(){
atexit(endproc);
return 0;
}https://stackoverflow.com/questions/12056641
复制相似问题