Je fais un projet dans un cours à mon université sur les systèmes distribués. Je prévois de créer quelque chose de similaire à Dropbox (getdropbox.com), mais avec une sorte de peer-to-peer non-centralisé. Pour cela j'ai besoin d'une méthode de détection de changement dans une structure de répertoire. Comment pensez-vous que Dropbox fait cela? Leur mise en œuvre fonctionne remarquablement bien. Je me demande s'ils utilisent FileSystemWatcher de l'API win32 sur Windows, et quelque chose de similaire et de plate-forme dépend de Linux et Mac.comment regarder un système de fichiers pour le changement
Répondre
A ma connaissance, DropBox (et autres) utilise un service Windows (ou un démon du côté Linux/Mac) pour surveiller le système de fichiers. Créer un tel .Net est très facile et ce scénario est généralement l'exemple de manuel pour les services Windows. Je crois que faire une chose similaire en C++ serait aussi simple.
Voici un lien vers un didacticiel simple pour .Net sur la création d'un service sous Windows. Tout ce que vous devez faire pour votre solution est d'ajouter votre logique de surveillance dans l'événement Timer.Tick().
Sous Mac OS X Leopard, il y a l'API FSEvents qui vous permet d'enregistrer des notifications de modifications du système de fichiers:
http://googlemac.blogspot.com/2008/03/file-system-change-logger-for-leopard.html
Du côté Linux, il y a le inotify horriblement sans papier. Si cela ne vous dérange pas d'utiliser glib, il y a la classe GFileMonitor, qui est vraiment facile à utiliser. Je ne pense pas que ce soit portable, donc ce serait uniquement Linux.
eduffy mentionné inotify ....
j'ai vu ce un certain temps, sur la base inotify. appelé incron, il ajoute des fonctionnalités de type cron à incron.
- 1. La meilleure façon de regarder le processus (et les sous-processus) pour le système de fichiers read() I/O?
- 2. Comment échapper un chemin de système de fichiers pour l'iPhone?
- 3. Comment faire pour modifier le document photographié à regarder "numérisé"
- 4. IE7 et fichiers XML sur le système de fichiers
- 5. Système de fichiers en mémoire pour Windows
- 6. WIX - Création d'un raccourci vers le bureau pour un fichier existant sur le système de fichiers
- 7. Comment afficher le système de fichiers dans Eclipse PDT
- 8. Système de fichiers TreeView
- 9. Système de fichiers TreeView
- 10. système de téléchargement de fichiers
- 11. Changement de titre CCK pour le formulaire
- 12. Oracle dbms_scheduler - réagir au changement de la date du système
- 13. Sondage pour la taille de bloc de système de fichiers
- 14. Meilleures pratiques pour stocker les fichiers téléchargés dans le système de fichiers
- 15. Utiliser Samba pour un accès aléatoire sans monter le système de fichiers?
- 16. Comment puis-je obtenir le chemin du système de fichiers pour une ressource sur iPhone?
- 17. Clé de tri arbitraire dans le système de fichiers
- 18. Système de cache pour les fichiers créés dynamiquement?
- 19. Monter un système de fichiers distant à l'aide de SSHFS
- 20. Comment ouvrir et transférer un fichier sur le système de fichiers dans mod_python?
- 21. Comment stockez-vous les fichiers téléchargés dans un système de fichiers?
- 22. Comment amener des fichiers dans un système de fichiers in/out MySQL DB?
- 23. Créer une boucle dans un système de fichiers Linux
- 24. Regarder des messages sur un objet dans le débogueur Xcode
- 25. Document de recherche sur le système de fichiers
- 26. Une question sur le cache du système de fichiers
- 27. Regarder/lire un fichier journal en croissance
- 28. Meilleure architecture pour gérer les modifications du système de fichiers?
- 29. Comment puis-je recevoir des notifications de modifications du système de fichiers sous OS X?
- 30. test de performance du système de fichiers
je méprendre sur ce que vous avez l'intention de le faire ici. Ajouter la logique à la minuterie tick? Cela signifie-t-il que vous avez l'intention d'obtenir un répertoire répertoriant chaque tick et de le comparer? Non! Ne fais pas ça! –
Non, n'utilisez jamais de minuterie. Sous Windows, utilisez FileSystemWatcher - sur Mac, utilisez FSEvents. Désolé de devoir voter cette réponse même si elle a déjà été acceptée. – ajacian81