Windows上有没有类似inotify的东西?

joh*_*son 92 windows inotify

在Linux OS中,有一个ionotify子系统,它通知应用程序对文件系统的更改.

但是,我主要是一个Windows用户,所以我想知道是否有类似的方法来监控文件系统的变化?

blu*_*ucz 42

如果您使用的是.net,请使用FileSystemWatcher.更多信息:http://msdn.microsoft.com/en-us/library/system.io.filesystemwatcher.aspx

如果您使用Ç,使用FindFirstChangeNotification,FindNextChangeNotification,ReadDirectoryChangesW.更多信息:http://msdn.microsoft.com/en-us/library/aa365261(VS.85).aspx

OSX上,相关的API是fseventsapi.

它们彼此之间略有不同,它们在边缘情况下都具有可疑的可靠性.一般而言,您无法依赖这些api来100%全面查看所有更改.大多数使用文件系统监控的人将其与定期扫描相结合,以补偿来自push api的丢失或不完整的信息.

  • 如果fs观察者api的消费者在读取事件时比其他过程生成它们要慢,则内核要么需要在另一个(可能是更高优先级)的过程中保持文件系统修改,要么允许缓冲区无限增长.inotify的缓冲区深度(如手册页中所述)由/ proc/sys/fs/inotify/max_queued_events控制.除此之外,你会得到一个IN_Q_OVERFLOW通知 - 这很好,但你仍然处于需要不时重新扫描的情况. (18认同)
  • 你能不能就"inotify边缘情况下可疑的可靠性"给出一些引用? (6认同)

Eug*_*ene 11

来自Microsoft的JNotifyFileMon.

  • JNotify对我来说非常完美,因为我需要跨平台兼容性.我甚至能够编写一个单独的bash脚本,它在cygwin,mac和linux中工作,只假设JAVA_HOME设置正确.当他们说"它删除了我的文件!"时,这对于调试客户机器上的问题非常有帮助.我实际上可以查看日志并尝试找出发生的时间/时间. (8认同)

Pet*_*vic 10

有点晚了......

Windows具有类似于OSX事件的工具,您可以在不运行应用程序的情况下监视事件.Windows USN Journal会跟踪所有文件更改.杰弗里里希特(高级Windows的作者)写了一篇很棒的文章,其中包含MSDN Journal的工作样本.

USN变更期刊的MSDN文档.

如果您正在构建需要监视整个卷的备份工具或索引等应用程序,那么USN Change Journals可能会更好.

  • 自从我使用它以来已经有一段时间了,但它没有使用FileSystemWatcher或FindFirstChangeNotification.我开始在Go中编写一个Windows事件观察器,主要基于Jeffery Richter的例子.从我做过的测试中,它是坚如磐石的,并且没有任何错过,类似于OS X中的fsevents.Gist在这里:https://gist.github.com/pkrnjevic/7219861 (4认同)