我想删除 C 程序末尾的文件,此时文件名已被遗忘。如果我可以直接使用FILE *删除它或找到文件名然后使用remove()...而不是为此记住文件名,那将是很好的。
有人知道可以通过何种方式实现这一目标?我在Windows系统上,但我需要保持可移植性,因此不能使用任何特定于操作系统的东西。
答案 0 :(得分:3)
很好,如果我可以使用FILE *直接删除它或找到 文件名然后使用remove()...而不是记住 这个
的文件名
无法从FILE *
检索文件名。 FILE *
不一定是真实文件;我只想到popen(3)
。
答案 1 :(得分:1)
我不知道可移植的方式,但有一个Linux版本(可能适用于其他unices)和Windows版本:
Linux:readlink()
上的sprintf("/proc/self/fd/%d",fd)
应该有效
Windows:GetFileInformationByHandleEx()
会将您的名称作为结构的一部分(搜索MSDN,我的头脑中没有详细信息)
答案 2 :(得分:1)
E.g
#include <stdio.h>
#include <stdlib.h>
void endproc(void){
remove("removeFile.dat");
}
int main(){
atexit(endproc);
return 0;
}