Le système d'exploitation peut-il me dire quand un nouveau fichier est créé?
-
03-07-2019 - |
Question
Je veux savoir quand un nouveau fichier est créé dans un répertoire spécifique, au lieu de le scanner de temps en temps.
Je comprends qu'il existe un moyen de faire en sorte que le système d'exploitation indique à mon programme qu'un nouveau fichier a été créé. Comment ça marche?
Comme indiqué, cela présente des similitudes avec Comment être averti du fichier / changement de répertoire en C / C ++, idéalement avec POSIX
La solution
Dépend de quel système d'exploitation.
Sous Windows, l'API de base serait Modification du répertoire. Notifications .
Puisque vous mentionnez Linux dans les balises, il s'agit de l'API inotify .
Pour ajouter à la réponse OS X, à partir de 10.5, vous souhaitez que le FSEvents API .
Autres conseils
Sous Linux, consultez Inotify .
Comment être notifié du changement de fichier / répertoire en C / C ++, idéalement avec POSIX
ou recherchez inotify dans stackoverflow, vous obtiendrez de nombreuses idées
FAM fournit une interface de visionnage des fichiers cohérente pour tous les systèmes UNIX. Sous Linux, le démon back-end peut être remplacé par Gamin , mais un programme est lié à avec FAM travaillera avec Gamin très bien. (En coulisse, FAM peut utiliser polling, et Gamin peut utiliser inotify, dnotify ou kqueue, mais vous ne devriez pas avoir à vous soucier de la mise en œuvre.)
OS X.5 contient FSEvents , ce qui est très différent du fait qu’il surveille l’ensemble du système au lieu des fichiers et des répertoires spécifiés, mais répondrait également à vos besoins.
Sous Windows, voir Rechercher (Premier | Suivant | Fermer) ChangeNotification ou ReadDirectoryChanges .
FileSystemWatcher est la solution - et cela fonctionne de manière récursive.
Il existe un exemple ici (recherchez FileSystemWatcher)
.Sous Mac OS X, cette fonctionnalité fait partie de l'API Spotlight.
Si vous utilisez .Net sous Windows (vous ne savez pas si Linux / mono), vous pouvez utiliser FileSsytemWatcher pour surveiller les nouveaux fichiers et générer des événements lors de leur création.
À partir de MSDN:
Utilisez FileSystemWatcher pour surveiller modifications dans un répertoire spécifié. Vous peut surveiller les modifications dans les fichiers et sous-répertoires du spécifié annuaire. Vous pouvez créer un composant regarder des fichiers sur un ordinateur local, un lecteur réseau ou un ordinateur distant.
L'API Windows fournit des fonctionnalités pour la surveillance du système de fichiers. Voici un exemple http://msdn.microsoft.com/en-us/library/aa365261%28VS.85%29.aspx