File Alteration Monitor
# File Alteration Monitor

En informatique, le File Alteration Monitor (FAM) est un sous-système sous Unix/Linux dont le but est de prévenir les applications dès que certains fichiers sont modifiés. Elle n'est plus maintenue et a été remplacée par la bibliothèque Gamin du projet GNOME, qui est totalement compatible avec FAM.

En français, la traduction de ce terme pourrait être Moniteur de modifications de fichier. Il arrive que la traduction trompeuse soit "Moniteur d'altération de fichier", mais le terme altération prête à confusion.

## Présentation

Ce logiciel aussi connu sous le nom de sgi_fam fournit un sous-système (développé par SGI) pour les systèmes d'exploitation basés sur Unix (Linux et autres). Le sous-système FAM prévient d'autres applications dès que certains fichiers sont modifiés.

Cela simplifie de beaucoup la tâche des programmeurs pour les applications clientes, sinon il serait nécessaire de programmer une lecture répétitive du disque pour détecter tout changement, ce qui serait pénalisant en temps de développement et, plus important, pour les performances des applications.

Par exemple, un gestionnaire de fichiers est prévenu lorsque des fichiers sont modifiés et il peut rafraîchir si nécessaire la représentation de ce fichier dans l'interface graphique.

## Composants logiciels et paramétrages

Le sous-système FAM est composé de deux parties :

* famd — Le daemon FAM qui gère les notifications et traite les requêtes. Les administrateurs peuvent le configurer en éditant le fichier etc/fam.conf

    On peut entre autres paramétrer le délai de polling (scrutation cyclique) pour le partage réseau NFS (paramètre nfs_polling_interval)
* libfam — Bibliothèque logicielle FAM : l'API d'interface avec les applications clientes

Des applications sur d'autres ordinateurs peuvent utiliser ce sous-système de 2 façons

* indirectement, via etc/inetd (voir (en) inetd, xinetd)
* directement (dans ce cas précis, il faut paramétrer correctement le paramètre local_only de etc/fam.conf).

## Equivalent de la bibliothèque logicielle libfam

Pour les langages java (langage) et .NET, la classe FileSystemWatcher est l'équivalent de la bibliothèque logicielle libfam.

Dans l'API Windows, FindFirstChangeNotification ou FindNextChangeNotification sont deux fonctions qui sont l'équivalent du libfam d'Unix.

