如何关闭文件并将其删除?
我有以下代码:
FILE *filePtr = fopen("fileName", "w");
...
现在我要关闭filePtr并删除文件“fileName”。
我应该:
fclose(filePtr);
remove("fileName");
或者:
remove("fileName");
fclose(filePtr);
我先做的事情有关系吗?
谢谢!
答案 0 :(得分:3)
这取决于操作系统。在* nix上,删除打开的文件使其保持打开状态并将数据保留在磁盘上,但会从文件系统中删除文件名,并在关闭时实际删除该文件;某些其他操作系统可能根本不允许您删除打开的文件。因此建议使用前者以获得最大的便携性。
答案 1 :(得分:0)
您不需要fopen
一个文件到remove
它。但是,在linux中,如果remove
为fopen
ed文件,则仅在关闭文件后才会将其删除。你仍然可以读/写它。
答案 2 :(得分:0)
正如man unlink(2)所说(对于Unix系统):
unlink()函数删除链接 从其目录和路径命名 减少文件的链接数 这是由链接引用的。如果 减量减少了链接数 该文件为零,没有进程 打开文件,然后打开所有资源 与文件相关联 回收。如果是一个或多个过程 在最后一个链接时打开文件 被删除,链接被删除,但是 删除文件被延迟 直到所有引用它为止 闭合。
所以订单根本不重要。
答案 3 :(得分:-1)
fclose
然后unlink更有意义。