Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

surveillance de fichier

7 réponses
Avatar
Olivier Saladin
Bonjour.
Savez-vous comment on peut facilement (en script ou C) surveiller la
modification d'un fichier. J'ai un fichier texte qui contient des parametres
de configurations d'un processus, et ce fichier peut être modifié en cours
de fonctionnement. Est-il possible de faire un "select" ou autre chose pour
attendre la modif du fichier pour relire dès que possible les nouveaux
paramètres ?


---
Outgoing mail is certified Virus Free.
Checked by AVG anti-virus system (http://www.grisoft.com).
Version: 6.0.684 / Virus Database: 446 - Release Date: 13/05/2004

7 réponses

Avatar
Emmanuel Florac
Le Sat, 15 May 2004 09:37:14 +0200, Olivier Saladin a écrit :


Bonjour.
Savez-vous comment on peut facilement (en script ou C) surveiller la
modification d'un fichier. J'ai un fichier texte qui contient des parametres
de configurations d'un processus, et ce fichier peut être modifié en cours
de fonctionnement. Est-il possible de faire un "select" ou autre chose pour
attendre la modif du fichier pour relire dès que possible les nouveaux
paramètres ?


Tout dépend de l'OS. Sous IRIX et Linux, on peut utiliser fam (File
Alteration Monitor) qui sert exactement à ça... Il y a un mécanisme
similaire sous FreeBSD mais dont le nom m'échappe.

--
De longs désirs, une longue admiration sans espérance, voilà le moyen
d'adorer les femmes, et de rendre l'amour une passion délicieuse!
N. Rétif de la Bretonne.

Avatar
cedric
A par faire des stat régulièrement et bien noter la date de dernière
modification, je ne voit pas. D'ailleurs à vu de nez j'ai l'impression
que fam fonctionne comme ca.
Avatar
manu
Olivier Saladin wrote:

Savez-vous comment on peut facilement (en script ou C) surveiller la
modification d'un fichier. J'ai un fichier texte qui contient des parametres
de configurations d'un processus, et ce fichier peut être modifié en cours
de fonctionnement. Est-il possible de faire un "select" ou autre chose pour
attendre la modif du fichier pour relire dès que possible les nouveaux
paramètres ?


Non, il faudra regulierement faire un stat et comparer la date de
modification. Un truc dans ce genre:

struct stat st;
static struct timeval conffile_modified;
static int cold = 1;

if (cold) {
gettimeofday(&conffile_modified, NULL)
cold = 0;
}

if (stat(conffile, &st) != 0) {
syslog(LOG_ERR, "config file "%s" unavailable",
conffile);
return;
}

if (st.st_mtime > conffile_modified.tv_sec) {
conffile_modified.tv_sec = st.st_mtime
reload_config();
}

--
Emmanuel Dreyfus
A lire: 240 pages en français sur l'administration UNIX avec BSD
http://www.eyrolles.com/php.informatique/Ouvrages/9782212112443.php3


Avatar
manu
Emmanuel Florac wrote:

Tout dépend de l'OS. Sous IRIX et Linux, on peut utiliser fam (File
Alteration Monitor) qui sert exactement à ça... Il y a un mécanisme
similaire sous FreeBSD mais dont le nom m'échappe.


kqueue, non?

--
Emmanuel Dreyfus
Publicité subliminale: achetez ce livre!
http://www.eyrolles.com/php.informatique/Ouvrages/9782212112443.php3


Avatar
Olivier Saladin
Tout dépend de l'OS. Sous IRIX et Linux, on peut utiliser fam (File
Alteration Monitor) qui sert exactement à ça... Il y a un mécanisme
similaire sous FreeBSD mais dont le nom m'échappe.

OK, merci, je vais regarder fam, IRIX et linux c'est exactement ce qu'il me

faut.


---
Outgoing mail is certified Virus Free.
Checked by AVG anti-virus system (http://www.grisoft.com).
Version: 6.0.684 / Virus Database: 446 - Release Date: 13/05/2004

Avatar
talon
Emmanuel Florac wrote:
Le Sat, 15 May 2004 09:37:14 +0200, Olivier Saladin a écrit :


Bonjour.
Savez-vous comment on peut facilement (en script ou C) surveiller la
modification d'un fichier. J'ai un fichier texte qui contient des parametres
de configurations d'un processus, et ce fichier peut être modifié en cours
de fonctionnement. Est-il possible de faire un "select" ou autre chose pour
attendre la modif du fichier pour relire dès que possible les nouveaux
paramètres ?


Tout dépend de l'OS. Sous IRIX et Linux, on peut utiliser fam (File
Alteration Monitor) qui sert exactement à ça... Il y a un mécanisme
similaire sous FreeBSD mais dont le nom m'échappe.



fam, a tout hasard ...

--

Michel TALON


Avatar
no
On Sat, 15 May 2004 09:37:14 +0200, Olivier Saladin wrote:

Bonjour.
Savez-vous comment on peut facilement (en script ou C) surveiller la
modification d'un fichier. J'ai un fichier texte qui contient des
parametres de configurations d'un processus, et ce fichier peut être
modifié en cours de fonctionnement. Est-il possible de faire un "select"
ou autre chose pour attendre la modif du fichier pour relire dès que
possible les nouveaux paramètres ?



Je pense qu'un problème avec cette solution (de verifier regulierement si
le fichier est modifié) est que ton programme risque de lire un fichier
qui est en cours d'édition/modification et peut être incomplet ou
erroné...

En plus on ne peut pas utiliser de « lock » car l'éditeur de texte
n'utilisera pas forcement le même lock. Dans ce cas une solution serait
de fournir un programme comme `vipw' pour éditer ton fichier de conf qui
s'assurera de placer un lock uitilisé par ton application avant de lancer
l'éditeur de texte.

Sinon, beaucoup d'applications Unix utilisent les signaux et
particulierement SIGHUP pour recharger leur config a la demande sans
relancer l'application (comme named par exemple). Dans ce cas, tu
installes dans ton application un gestionnaire de signaux qui ira lire le
fichier de config et se reconfigurer lorsqu'il recevra un SIGHUP. Tu
édites ton fichier de conf, ensuite tu lances un `kill -HUP <pid>'.