独立于操作系统的API来监视文件系统?

时间:2020-03-06 14:57:11  来源:igfitidea点击:

我想尝试一下有关分布式文件同步/复制的想法。为了在用户工作时提高效率,我想实现某种守护程序来监视某些目录中的更改(例如/ home / user / dirToBeMonitored或者c:\ docs和setts \ user \ dirToBeMonitored)。因此,我可以知道每次(或者在合理的间隔内)添加/更改/删除了哪个文件名。

任何中高级语言都可以吗?我们知道一些API(以及使用哪种语言?)吗?

谢谢。

解决方案

在Linux中,它称为inotify。

看来,Windows,Linux,Mac OS X和我们可以命名的任何其他Unix的API完全不同。我不知道有任何跨平台的库以一致的方式处理此问题。

在OS X上,它称为fsevents。这是一个操作系统级别的API,因此最容易从C或者C ++访问。尽管我们可能尚未编写首选语言的绑定,但几乎可以从任何一种语言访问它。

一个公正的答案,尽管它需要一个较大的库依赖关系(值得IMO)!

QT提供了QFileSystemwatcher类,该类使用基础平台的本机机制。

更好的是,我们可以将QT语言绑定用于Python或者Ruby。这是一个使用QFileSystemWatcher的简单PyQT4应用程序。

笔记

  • 有关创建可部署的PyQT4应用程序的很好的参考,尤其是在OSX上,但也适用于Windows。
  • 以前在此处发布的相同解决方案。
  • 其他跨平台工具包也可以解决问题(例如,Gnome的GIO具有GFileMonitor,尽管它只是UNIX,并且不支持OSX的FSEvents机制afaik)。