我想在磁盘上存储所有文件的所有版本。问题是我不想复制整个磁盘。相反,我希望收到文件即将更改的通知,以便我可以创建一个拷贝。这将允许不更改的文件不浪费磁盘空间。有什么办法可以实现吗?
最佳答案
我相信你问的是不可能的。一旦一个页面被映射到内存并变脏,后续对其的写入就不会以任何方式被跟踪。 (也就是说,可以将多个写入压缩为一个写入,而无需考虑这些写入是针对曾经被查看过的映射文件的事实。)
如果您更详细地解释您的外部问题是什么,可能会有解决方案。您可以使用文件系统筛选器驱动程序来完成此操作,但会造成非常痛苦的性能损失,因为您必须禁止或限制文件的内存映射。
您的问题中也存在固有的歧义。如果我这样做:
for(int i=0; i<100; i++) *(WritableFileMapping)=i;
那是 100 次写入吗?你想被通知 100 次吗?
关于c++ - 如何在写入发生之前获得文件更改的通知?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8640799/