使用文件删除文件*

时间:2012-08-21 14:04:36

标签: c file delete-file

  

可能重复:
  How can I delete a file pointed to by a FILE* in C?

我想删除 C 程序末尾的文件,此时文件名已被遗忘。如果我可以直接使用FILE *删除它或找到文件名然后使用remove()...而不是为此记住文件名,那将是很好的。

有人知道可以通过何种方式实现这一目标?我在Windows系统上,但我需要保持可移植性,因此不能使用任何特定于操作系统的东西。

3 个答案:

答案 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;
}