我正在开发一个配额管理器,该管理器是在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;
}
如何在删除文件之前强制关闭文件?