我可以使用C来了解在运行时是否在磁盘上执行文件操作?

时间:2009-12-25 11:11:29

标签: c file storage

我可以在运行时使用C来知道磁盘上是否执行了文件操作(以及执行的位置)吗?

4 个答案:

答案 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#下,事件是在一个单独的线程中进行的,因此您必须使用委托来指示事件发生的主要(或其他)线程。