Salut,
Je suis en train de me demande comment implémenter dans un de mes programmes C une routine qui surveille la modif d'un fichier, et force est de constater que le sujet n'est pas évident.
En gros il y a 2 approches majeures : un appel système propre à Linux (voir dnotify.txt dans la source du kernel) et le démon fam qui manifestement ne fait pas l'unanimité.
Voila un lien sympathique qui résume les différentes approches :
http://www.devchannel.org/devtoolschannel/04/05/13/2146252.shtml(...)
J'aurais bien posté une astuce mais ça m'a l'air trop spécifique, et puis il y a un lien extérieur.
Pour le premier exemple (et le deuxième aussi d'ailleurs) l'en-tête a sauté, voila ce qu'il faut rajouter :
#define _GNU_SOURCE
#include < fcntl.h >
#include < linux/sys.h >
#include < stdio.h >
#include < errno.h >
#include < signal.h >
#include < stdlib.h >
#include < string.h >
#include < unistd.h >
Voila voila, ça n'intéressera probablement pas grand monde mais moi ça m'a bien rendu service donc pourquoi pas un autre...
# Test
Posté par Franck . Évalué à 4.
Aucun problème en revanche avec fam. Ca marche nickel. D'ailleurs, il me semble que Nautilus et Konqueror utilisent fam pour détecter la modification d'un fichier. Toutefois, Google m'a gentiment aiguillé vers quelques avis hargneux sur fam...
# McCutchan, Robert Love, Inotify
Posté par Lureau Marc-André . Évalué à 1.
Dnotify est en passe de se faire remplacer par Inotify (ecrit par McCutchan, moins lourd), voir les postes et les slides de Robert Love (sur sa page) pour les details: http://kerneltrap.org/node/view/3847(...)
A noter que de nombreux front sont disponibles qui se servent de ses differents mechanismes de maniere transparente. Je pense a efsd par exemple (ayant etudie le source y'a 3 ans), http://www.enlightenment.org/pages/efsd.html(...) ou Gamin, utilise par KDE. Y'a surement un equivalent pour Gnome/Nautilus.
J'aurais bien rien poste du tout, mais je me suis dit que ca pouvait toujours servir a quelqu'un, un jour, par hasard...
[^] # Commentaire supprimé
Posté par Anonyme . Évalué à 2.
Ce commentaire a été supprimé par l’équipe de modération.
# ben ...
Posté par vincent LECOQ (site web personnel) . Évalué à 1.
[^] # Re: ben ...
Posté par gc (site web personnel) . Évalué à 3.
[^] # Re: ben ...
Posté par Alban Crequy (site web personnel) . Évalué à 2.
fam, c'est pour surveiller des fichiers (ouverts ou non). Ca ne te permet pas de savoir si tu peux ecrire ou lire. C'est fait pour surveiller le changement d'état des fichiers uniquement (par exemple, changement de la taille du fichier). fam est une lib. Cette lib fonctionne soit en utilisant un appel système (si disponible), soit en lisant régulièrement le système de fichier (toutes les 6 secondes par exemple).
# La question est-elle pertinente?
Posté par Snark_Boojum . Évalué à 2.
Snark
# Fichiers spéciaux
Posté par Florent Bayle (site web personnel) . Évalué à 2.
Suivre le flux des commentaires
Note : les commentaires appartiennent à celles et ceux qui les ont postés. Nous n’en sommes pas responsables.