как посмотреть файловую систему на предмет изменений - PullRequest
3 голосов
/ 25 ноября 2008

Я делаю проект на курсе в моем университете по распределенным системам. Я планирую создать нечто похожее на Dropbox (getdropbox.com), но с каким-то нецентрализованным одноранговым поворотом к нему. Для этого мне нужен какой-то метод обнаружения изменений в структуре каталогов. Как вы думаете, Dropbox сделать это? Их реализация работает замечательно хорошо. Интересно, используют ли они FileSystemWatcher из Win32 API для Windows, и что-то подобное и зависит от платформы Linux и Mac.

Ответы [ 4 ]

4 голосов
/ 25 ноября 2008

В Mac OS X Leopard есть API FSEvents, который позволяет вам регистрироваться для уведомлений об изменениях файловой системы:

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

3 голосов
/ 25 ноября 2008

Eduffy упомянутый inotify ....

Я видел это некоторое время назад, основываясь на inotify. называется incron, он добавляет функциональность, подобную cron, в incron.

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

3 голосов
/ 25 ноября 2008

На стороне Linux есть ужасно недокументированное inotify. Если вы не возражаете против использования glib, есть класс GFileMonitor , который действительно прост в использовании. Я не думаю, что он переносимый, поэтому он будет только для Linux.

1 голос
/ 25 ноября 2008

Насколько мне известно, DropBox (и тому подобное) использует службу Windows (или демон на стороне Linux / Mac) для мониторинга файловой системы. Создать такое в .Net очень просто, и этот сценарий обычно является примером учебника для Windows Services. Я считаю, что делать подобное в C ++ было бы довольно просто.

Вот ссылка на простое руководство для .Net о том, как создать службу в Windows. Все, что вам нужно сделать для решения, это добавить логику монитора в событие Timer.Tick ().

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

...