c++ - 如何在写入发生之前获得文件更改的通知?

标签 c++ c windows

我想在磁盘上存储所有文件的所有版本。问题是我不想复制整个磁盘。相反,我希望收到文件即将更改的通知,以便我可以创建一个拷贝。这将允许不更改的文件不浪费磁盘空间。有什么办法可以实现吗?

最佳答案

我相信你问的是不可能的。一旦一个页面被映射到内存并变脏,后续对其的写入就不会以任何方式被跟踪。 (也就是说,可以将多个写入压缩为一个写入,而无需考虑这些写入是针对曾经被查看过的映射文件的事实。)

如果您更详细地解释您的外部问题是什么,可能会有解决方案。您可以使用文件系统筛选器驱动程序来完成此操作,但会造成非常痛苦的性能损失,因为您必须禁止或限制文件的内存映射。

您的问题中也存在固有的歧义。如果我这样做:

for(int i=0; i<100; i++) *(WritableFileMapping)=i;

那是 100 次写入吗?你想被通知 100 次吗?

关于c++ - 如何在写入发生之前获得文件更改的通知?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8640799/

相关文章:

javascript - 判断浏览器是在 windows 还是 mac/linux 上运行的 chrome

.net - 如何安全地将文件保存到磁盘而没有被 Windows 拒绝的风险?

c++ - 重载可变长度模板函数的递归结束

c - 在 C 中展开 For 循环

c++ - 链接到使用 cygwin 在 Ubuntu 中编译的 .o 文件

c 中 char * 缓冲区的 Python 样式 repr?

c - 指针char输出说明

windows - 如何从文本文件中读取值,然后查找并替换 xml 文件中的值?

c++ - 我应该使用 AcceptEx() 还是 WSAAccept()?

c++ - 如何清除C++中不需要的输入流