我可以在运行时使用C来知道磁盘上是否执行了文件操作(以及执行的位置)吗?
答案 0 :(得分:1)
从MSDN中查看以下示例:Change Notify Watcher Sample
答案 1 :(得分:1)
您需要依赖特定的OS API,您可以使用C编程语言。
答案 2 :(得分:1)
正如其他人所说,没有平台独立/ C标准方式。
在Linux上,您可以使用inotify api。有a tutorial on IBM developerworks。
答案 3 :(得分:1)
你问题的答案取决于你的意思。如果您询问是否可以检测到磁盘上的物理操作(搜索,读取或写入),答案是否定的。磁盘具有磁盘缓存,可以在性能名称中隐藏这些操作。您可以使用上述机制判断何时更改缓存,但不能在执行物理操作时进行更改。
这就是我们拥有日志文件系统的原因。但是,即使使用日记功能,如果发生灾难性故障并且无法保存缓存,也有可能导致实际数据丢失。
在上面的方法中,我使用了FileSystemWatcher,它运行得很好。您可以选择您感兴趣的事件,通知您的程序将在文件事件发生时收到程序事件。
请注意,至少在Windows / C#下,事件是在一个单独的线程中进行的,因此您必须使用委托来指示事件发生的主要(或其他)线程。