3

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

我有以下代码:

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

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

我是不是该:

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

或者:

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

我先做什么重要吗?

谢谢!!

4

4 回答 4

3

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

于 2011-04-24T09:44:23.753 回答
0

fclose然后unlink更有意义。

于 2011-04-24T09:45:56.863 回答
0

你不需要fopen一个文件给remove它。但是,在linux中,如果你remove是一个fopened文件,它只有在关闭后才会被删除。您仍然可以读/写它。

于 2011-04-24T09:46:50.310 回答
0

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

unlink() 函数从其目录中删除由 path 命名的链接,并减少链接引用的文件的链接计数。如果该减量将文件的链接计数减少到零,并且没有进程打开该文件,则与该文件关联的所有资源都将被回收。如果一个或多个进程在删除最后一个链接时打开了文件,则删除链接,但文件的删除会延迟,直到所有对它的引用都已关闭。

所以顺序根本不重要。

于 2011-04-24T09:47:51.870 回答