inotify

inotify

inotify est un mécanisme du noyau Linux qui fournit des notifications concernant le système de fichiers.

Il a été écrit par John McCutchan avec l'aide de Robert Love et plus tard par Amy Griffis pour remplacer dnotify. Il a été inclus dans la branche principale du noyau linux à partir de la version 2.6.13 (18 juin 2005), et pouvait déjà être compilé dans 2.6.12 et peut être même plus tôt grâce à l'utilisation de patch. Il est essentiellement une extension du système de fichiers qui rend compte à une application de tout changement dans le système de fichiers.

On le trouve dans des systèmes d'indexation de fichiers comme Beagle, où ses fonctionnalités permettent une ré-indexation des fichiers modifiés, sans qu'il soit besoin de regarder la totalité du système de fichiers à intervalles réguliers pour cela, ce qui serait très inefficace. En étant averti qu'un fichier a été modifié directement par le noyau, plutôt que d'avoir à regarder (attente active), Beagle et autres logiciels du même type peuvent réaliser la ré-indexation très rapidement, en nuisant peu aux performances du système (inotify permet donc l'usage de tels programmes sans que ce soit déraisonnable).

Il peut aussi être utilisé pour actualiser automatiquement des 'vues' d'un répertoire, recharger des fichiers de configuration, etc.

Avantages

Inotify a beaucoup d'avantages par rapport à dnotify, le module qu'il remplace. Avec l'ancien module, un programme devait utiliser un descripteur de fichier pour chaque répertoire qu'il voulait surveiller. Cela pouvait devenir un goulot d'étranglement parce que le nombre de descripteurs de fichiers maximum pour un processus pouvait être atteint.

L'utilisation des descripteurs de fichiers dans dnotify s'est aussi avérée être un problème avec l'usage des périphériques de stockage amovibles. Les périphériques ne pouvaient pas être 'démontés' parce qu'il y avait encore des descripteurs de fichiers pointant sur eux.

Fonctionnement

Inotify est utilisé via une série d'appels système spécifiquement créés pour lui.

#include <sys/inotify.h>

Incluez cette en-tête de fichier pour utiliser inotify.

int inotify_init(void)

Cela crée une instance d'inotify. Elle retourne un descripteur de fichier par lequel sont lus tous les évènements. Utilisez les appels read() pour recevoir les évènements. Afin d'éviter une attente active, read() bloque jusqu'à ce qu'un évènement arrive.

int inotify_add_watch(int fd, const char* chemin, int masque)

Démarre la surveillance de l'inode pointée par le chemin pour les évènements contenus dans le masque. Retourne un descripteur d'écoute qui est unique (au sein de cette instance inotify) sur l'inode pointée par le chemin (NOTE: De multiples chemins peuvent pointer vers le même inode/surveiller le même descripteur).

int inotify_rm_watch(int fd, int wd)

Supprime la surveillance sur le descripteur surveillé.

Les évènements générés par inotify contiennent les informations suivantes :

Identifier Contenus
wd descripteur surveillé
mask tag évènement
cookie cookie utilisé pour la synchronisation entre IN_MOVED_FROM et IN_MOVED_TO
len longueur champ nom
name le nom de fichier (optionnel) associé à cet évènement (local au répertoire parent)

Voici quelques-uns des évènements qui peuvent être surveillés :

  • IN_ACCESS - lecture du fichier
  • IN_MODIFY - dernière modification
  • IN_ATTRIB - changement des attributs du fichier
  • IN_OPEN et IN_CLOSE - ouverture et fermeture du fichier
  • IN_MOVED_FROM et IN_MOVED_TO - déplacement ou renommage du fichier
  • IN_DELETE - suppression d'un fichier/répertoire
  • IN_CREATE - création d'un fichier dans le répertoire surveillé
  • IN_DELETE_SELF - suppression du fichier surveillé

Sources


Wikimedia Foundation. 2010.

Contenu soumis à la licence CC-BY-SA. Source : Article inotify de Wikipédia en français (auteurs)

Игры ⚽ Нужно решить контрольную?

Regardez d'autres dictionnaires:

  • Inotify — is a Linux kernel subsystem that provides file system event notification. It was written by John McCutchan with help from Robert Love and later Amy Griffis to replace dnotify. It was included in the mainline kernel from release 2.6.13 (2005 06… …   Wikipedia

  • Inotify — est un mécanisme du noyau linux qui fournit des notifications concernant le système de fichiers. Il a été écrit par John McCutchan avec l aide de Robert Love et plus tard par Amy Griffis pour remplacer dnotify. Il a été inclus dans la branche… …   Wikipédia en Français

  • Inotify — это подсистема ядра Linux, которая позволяет получать уведомления об изменениях в файловой системе. В основное ядро была включена начиная с 2.6.13, но может использоваться и с более ранними ядрами с помощью наложения патча. Основная сфера… …   Википедия

  • inotify — это подсистема ядра Linux, которая позволяет получать уведомления об изменениях в файловой системе. В основное ядро была включена начиная с 2.6.13, но может использоваться и с более ранними ядрами с помощью наложения патча. Основная сфера… …   Википедия

  • Linux-Kernel — Linux (Kernel) Entwickler Linus Torvalds u. v. m. Sprache(n) …   Deutsch Wikipedia

  • Linux (Kernel) — Bildschirmfoto …   Deutsch Wikipedia

  • Linux Kernel — Linux (Kernel) Entwickler Linus Torvalds u. v. m. Sprache(n) …   Deutsch Wikipedia

  • Linuxkernel — Linux (Kernel) Entwickler Linus Torvalds u. v. m. Sprache(n) …   Deutsch Wikipedia

  • O(1)-Scheduler — Linux (Kernel) Entwickler Linus Torvalds u. v. m. Sprache(n) …   Deutsch Wikipedia

  • Gamin — Gamin, a monitoring system for files and directories, independently implements a subset of FAM, the File Alteration Monitor. Running as a service, it allows for the detection of modifications to a file or directory. gam server functions as a… …   Wikipedia

Share the article and excerpts

Direct link
Do a right-click on the link above
and select “Copy Link”