如何关闭文件并将其删除?
我有以下代码:
FILE *filePtr = fopen("fileName", "w");
...
现在我想关闭 filePtr 并删除文件“fileName”。
我是不是该:
fclose(filePtr);
remove("fileName");
或者:
remove("fileName");
fclose(filePtr);
我先做什么重要吗?
谢谢!!
那是依赖于操作系统的。在 *nix 上,删除打开的文件会使其保持打开状态并保留磁盘上的数据,但会从文件系统中删除文件名,实际上会在关闭时删除文件;其他一些操作系统可能根本不允许您删除打开的文件。因此,建议使用前者以获得最大的便携性。
fclose
然后unlink更有意义。
你不需要fopen
一个文件给remove
它。但是,在linux中,如果你remove
是一个fopen
ed文件,它只有在关闭后才会被删除。您仍然可以读/写它。
正如 man unlink(2) 所说(对于 Unix 系统):
unlink() 函数从其目录中删除由 path 命名的链接,并减少链接引用的文件的链接计数。如果该减量将文件的链接计数减少到零,并且没有进程打开该文件,则与该文件关联的所有资源都将被回收。如果一个或多个进程在删除最后一个链接时打开了文件,则删除链接,但文件的删除会延迟,直到所有对它的引用都已关闭。
所以顺序根本不重要。