3

我正在我大学的分布式系统课程中做一个项目。我正计划创建类似于 Dropbox ( getdropbox.com ) 的东西,但带有某种非中心化的点对点扭曲。为此,我需要一些检测目录结构变化的方法。您认为 Dropbox 是如何做到这一点的?他们的实施效果非常好。我想知道他们是否在 windows 上使用来自 win32 api 的 FileSystemWatcher,以及依赖于 Linux 和 Mac 的类似平台。

4

4 回答 4

4

在 Mac OS X Leopard 下有 FSEvents API,它允许您注册文件系统更改的通知:

http://googlemac.blogspot.com/2008/03/file-system-change-logger-for-leopard.html

于 2008-11-25T14:47:10.607 回答
3

在 Linux 方面,有可怕的无证 inotify。如果您不介意使用 glib,则可以使用GFileMonitor类,它非常易于使用。我不认为它是可移植的,所以它只适用于 Linux。

于 2008-11-25T14:54:50.370 回答
3

eduffy 提到了 inotify ....

我不久前看到了这个,基于inotify。称为 incron,它为 incron 添加了类似 cron 的功能。

http://www.linux.com/feature/144666

于 2008-11-25T15:04:05.580 回答
1

据我所知,DropBox(等)使用 Windows 服务(或 Linux/Mac 端的守护程序)来监视文件系统。在 .Net 中创建此类非常容易,并且此场景通常是 Windows 服务的教科书示例。我相信在 C++ 中做类似的事情也会相当简单。

这是 .Net 简单教程的链接,该教程介绍了如何在 Windows 上创建服务。您需要为您的解决方案做的就是在 Timer.Tick() 事件中添加您的监视器逻辑。

http://www.developer.com/net/csharp/article.php/2173801

于 2008-11-25T14:49:10.460 回答