我正在开发一个在 OS X 下用 C/C++ 实现的配额管理器,它限制特定文件夹的最大大小。在我的项目中,有通用线程工作者可以执行将新数据写入文件夹或将数据从文件夹移动到服务器。
这样,有时,删除任务可能会删除仍在由另一个线程写入磁盘的文件。
我可以以某种方式防止文件在写入过程中被删除。我可以实现自己的机制(使用标志、锁等),但我相信它应该是文件系统属性。
我试过下面的代码来检查文件的删除失败是否仍然打开,但它实际上是成功的。
#include <stdio.h>
int main() {
FILE *fp;
fp=fopen("./x", "w");
fprintf(fp, "Testing...\n");
if( remove( "./x" ) != 0 )
perror( "Error deleting file" );
else
puts( "File successfully deleted" );
return 0;
}
如何在删除之前强制关闭文件?