删除c中的文件

时间:2011-04-24 09:40:30

标签: c file fclose

如何关闭文件并将其删除?

我有以下代码:

FILE *filePtr = fopen("fileName", "w");
...

现在我要关闭filePtr并删除文件“fileName”。

我应该:

fclose(filePtr);
remove("fileName");

或者:

remove("fileName");
fclose(filePtr);

我先做的事情有关系吗?

谢谢!

4 个答案:

答案 0 :(得分:3)

这取决于操作系统。在* nix上,删除打开的文件使其保持打开状态并将数据保留在磁盘上,但会从文件系统中删除文件名,并在关闭时实际删除该文件;某些其他操作系统可能根本不允许您删除打开的文件。因此建议使用前者以获得最大的便携性。

答案 1 :(得分:0)

您不需要fopen一个文件到remove它。但是,在linux中,如果removefopen ed文件,则仅在关闭文件后才会将其删除。你仍然可以读/写它。

答案 2 :(得分:0)

正如man unlink(2)所说(对于Unix系统):

  

unlink()函数删除链接   从其目录和路径命名   减少文件的链接数   这是由链接引用的。如果   减量减少了链接数   该文件为零,没有进程   打开文件,然后打开所有资源   与文件相关联   回收。如果是一个或多个过程   在最后一个链接时打开文件   被删除,链接被删除,但是   删除文件被延迟   直到所有引用它为止   闭合。

所以订单根本不重要。

答案 3 :(得分:-1)

fclose然后unlink更有意义。