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

test robuste de d

6 réponses
Avatar
PIGUET Bruno
Bonjour,

Dans un programme en C, Je souhaite implanter un système de cache pour
une fonction qui doit retourner certaines informations contenues dans un
fichier :
La fonction garde en mémoire stat.st_dev, stat.st_ino et stat.st_mtime,
et toutes les informations du fichier.
Lorsqu'elle est appelée, elle construit le chemin du fichier à lire, et
fait un stat() sur ce chemin.
Si le triplet (stat.st_dev, stat.st_ino et stat.st_mtime) diffère de
celui gardé en mémoire, alors elle fait l'opération de lecture et garde
en mémoire (statique) les informations.
Ensuite, elle applique les critères (passé en argument) pour trouver
en mémoire les information demandée, et elle le retourne.

Le critère sur le triplet (stat.st_dev, stat.st_ino et stat.st_mtime)
vous semble-t'il robuste pour ce genre d'opération ? Si ces trois valeurs
n'ont pas changé, je n'ai pas besoin d'aller relire le fichier ?

Bruno.

6 réponses

Avatar
Nicolas George
PIGUET Bruno wrote in message <heiv3q$pep$:
Le critère sur le triplet (stat.st_dev, stat.st_ino et stat.st_mtime)
vous semble-t'il robuste pour ce genre d'opération ?



Ça dépend par rapport à quel genre de modifications. Par rapport à une
utilisation normale, probablement, pour peu que l'horloge système soit à
l'heure. S'il y a des considérations de sécurité, c'est plus risqué, en
particulier parce qu'un utilisateur peut fixer le mtime à sa guise.
Avatar
Paul Gaborit
À (at) 25 Nov 2009 10:56:55 GMT,
Nicolas George <nicolas$ écrivait (wrote):

PIGUET Bruno wrote in message <heiv3q$pep$:
Le critère sur le triplet (stat.st_dev, stat.st_ino et stat.st_mtime)
vous semble-t'il robuste pour ce genre d'opération ?



Ça dépend par rapport à quel genre de modifications. Par rapport à une
utilisation normale, probablement, pour peu que l'horloge système soit à
l'heure. S'il y a des considérations de sécurité, c'est plus risqué, en
particulier parce qu'un utilisateur peut fixer le mtime à sa guise.



Sans aller chercher l'utilisateur malicieux, il y a aussi le problème
de certains couples client/serveur NFS qui gardent (gardaient?) en
cache trop longtemps ce genre d'information.

--
Paul Gaborit - <http://perso.mines-albi.fr/~gaborit/>
Avatar
xavier
Paul Gaborit wrote:

Sans aller chercher l'utilisateur malicieux, il y a aussi le problème
de certains couples client/serveur NFS qui gardent (gardaient?) en
cache trop longtemps ce genre d'information.



On peut contourner ceci en calculant un Hash MD5 du fichier. Mais ça
dépend des performances que l'OP attend. Si c'est plus long de calculer
une somme de contrôle que de relire le fichier, on n'y gagne pas
vraiment...

--
XAv
Disponible au 01/06/2010
<http://www.xavierhumbert.net/perso/CV2.html>
Avatar
JKB
Le 25-11-2009, ? propos de
Re: test robuste de détection de non-changemeùnt de fichier ?,
Xavier ?crivait dans fr.comp.os.unix :
Paul Gaborit wrote:

Sans aller chercher l'utilisateur malicieux, il y a aussi le problème
de certains couples client/serveur NFS qui gardent (gardaient?) en
cache trop longtemps ce genre d'information.



On peut contourner ceci en calculant un Hash MD5 du fichier. Mais ça
dépend des performances que l'OP attend. Si c'est plus long de calculer
une somme de contrôle que de relire le fichier, on n'y gagne pas
vraiment...



Et comment je calcule la somme de contrôle _sans_ relire le fichier ?

JKB

--
Le cerveau, c'est un véritable scandale écologique. Il représente 2% de notre
masse corporelle, mais disperse à lui seul 25% de l'énergie que nous
consommons tous les jours.
Avatar
xavier
JKB wrote:

Et comment je calcule la somme de contrôle _sans_ relire le fichier ?



Je me disais bien qu'il y avait un défaut :-)

Néanmoins, je crois que c'est un truc qui se trouve dans les métadonnées
ZFS si tu l'utilises.

--
XAv
Disponible au 01/06/2010
<http://www.xavierhumbert.net/perso/CV2.html>
Avatar
JKB
Le 25-11-2009, ? propos de
Re: test robuste de détection de non-changemeùnt de fichier ?,
Xavier ?crivait dans fr.comp.os.unix :
JKB wrote:

Et comment je calcule la somme de contrôle _sans_ relire le fichier ?



Je me disais bien qu'il y avait un défaut :-)

Néanmoins, je crois que c'est un truc qui se trouve dans les métadonnées
ZFS si tu l'utilises.



Donc c'est portable ;-)

JKB

--
Le cerveau, c'est un véritable scandale écologique. Il représente 2% de notre
masse corporelle, mais disperse à lui seul 25% de l'énergie que nous
consommons tous les jours.