【问题标题】:OS-independent API to monitor file system?独立于操作系统的 API 来监控文件系统?
【发布时间】:2010-09-14 09:43:27
【问题描述】:

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

这对任何高级语言都有可能吗?您是否知道一些 API(以及使用哪种语言?)来执行此操作?

谢谢。

【问题讨论】:

  • OP 要求跨平台解决方案,以下答案均未解决此问题。理想情况下,这样的解决方案应该用 C++ 等低级语言实现,然后提供与各种高级语言(即 Python)的绑定

标签: platform-independent file-monitoring


【解决方案1】:

一个合理的答案,尽管它需要一个较大的库依赖项(非常值得 IMO)!

QT 提供了QFileSystemwatcher 类,它使用了底层平台的原生机制。

更好的是,您可以使用 Python 或 Ruby 的 QT 语言绑定。 Here 是一个简单的 PyQT4 应用程序,它使用 QFileSystemWatcher。

备注

  • creating deployable PyQT4 apps 上的一个很好的参考,尤其是在 OSX 上,但也应该适用于 Windows。
  • 之前发布的相同解决方案 here。
  • 其他跨平台工具包也可以解决问题(例如 Gnome 的 GIO 有 GFileMonitor,尽管它仅适用于 UNIX 并且不支持 OSX 的 FSEvents 机制 afaik)。

【讨论】:

    【解决方案2】:

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

    【讨论】:

      【解决方案3】:

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

      【讨论】:

        【解决方案4】:

        在 Linux 中它被称为inotify。

        【讨论】:

          猜你喜欢
          • 2013-06-14
          • 1970-01-01
          • 2017-07-19
          • 2010-12-22
          • 1970-01-01
          • 2012-06-17
          • 1970-01-01
          • 2013-04-24
          • 1970-01-01
          相关资源
          最近更新 更多