je sais récupérer les infos sur un fichier (fonction stat), je sais
modifier les champs atime et mtime (fonction utime). Par contre, je
cherche comment modifier le champ ctime.
Le problème provient d'un logiciel de contrôle d'intégrité : quand je
calcule le checksum sur un fichier, cela modifie le champs atime, et
quand je le force avec utime, cela change le champ ctime ...
Cette action est irreversible, confirmez la suppression du commentaire ?
Signaler le commentaire
Veuillez sélectionner un problème
Nudité
Violence
Harcèlement
Fraude
Vente illégale
Discours haineux
Terrorisme
Autre
Nicolas George
gerbier wrote in message <epcd7s$uir$:
je sais récupérer les infos sur un fichier (fonction stat), je sais modifier les champs atime et mtime (fonction utime). Par contre, je cherche comment modifier le champ ctime.
On peut pas, c'est précisément à ça qu'il sert.
Le problème provient d'un logiciel de contrôle d'intégrité : quand je calcule le checksum sur un fichier, cela modifie le champs atime, et quand je le force avec utime, cela change le champ ctime ...
Certains systèmes ont un flag à l'ouverture pour dire de ne pas mettre à jour l'atime. Sous Linux, c'est O_NOATIME.
gerbier wrote in message <epcd7s$uir$1@sxcom1.cnrm.meteo.fr>:
je sais récupérer les infos sur un fichier (fonction stat), je sais
modifier les champs atime et mtime (fonction utime). Par contre, je
cherche comment modifier le champ ctime.
On peut pas, c'est précisément à ça qu'il sert.
Le problème provient d'un logiciel de contrôle d'intégrité : quand je
calcule le checksum sur un fichier, cela modifie le champs atime, et
quand je le force avec utime, cela change le champ ctime ...
Certains systèmes ont un flag à l'ouverture pour dire de ne pas mettre à
jour l'atime. Sous Linux, c'est O_NOATIME.
je sais récupérer les infos sur un fichier (fonction stat), je sais modifier les champs atime et mtime (fonction utime). Par contre, je cherche comment modifier le champ ctime.
On peut pas, c'est précisément à ça qu'il sert.
Le problème provient d'un logiciel de contrôle d'intégrité : quand je calcule le checksum sur un fichier, cela modifie le champs atime, et quand je le force avec utime, cela change le champ ctime ...
Certains systèmes ont un flag à l'ouverture pour dire de ne pas mettre à jour l'atime. Sous Linux, c'est O_NOATIME.
gerbier
Nicolas George wrote:
gerbier wrote in message <epcd7s$uir$:
je sais récupérer les infos sur un fichier (fonction stat), je sais modifier les champs atime et mtime (fonction utime). Par contre, je cherche comment modifier le champ ctime.
Certains systèmes ont un flag à l'ouverture pour dire de ne pas mettre à jour l'atime. Sous Linux, c'est O_NOATIME.
impeccable (testé, approuvé) : c'est exactement ce qu'il me fallait. En plus cela semble aussi marcher sur windows.
merci !
Nicolas George wrote:
gerbier wrote in message <epcd7s$uir$1@sxcom1.cnrm.meteo.fr>:
je sais récupérer les infos sur un fichier (fonction stat), je sais
modifier les champs atime et mtime (fonction utime). Par contre, je
cherche comment modifier le champ ctime.
Certains systèmes ont un flag à l'ouverture pour dire de ne pas mettre à
jour l'atime. Sous Linux, c'est O_NOATIME.
impeccable (testé, approuvé) : c'est exactement ce qu'il me fallait. En
plus cela semble aussi marcher sur windows.
je sais récupérer les infos sur un fichier (fonction stat), je sais modifier les champs atime et mtime (fonction utime). Par contre, je cherche comment modifier le champ ctime.
Certains systèmes ont un flag à l'ouverture pour dire de ne pas mettre à jour l'atime. Sous Linux, c'est O_NOATIME.
impeccable (testé, approuvé) : c'est exactement ce qu'il me fallait. En plus cela semble aussi marcher sur windows.
merci !
gerbier
Certains systèmes ont un flag à l'ouverture pour dire de ne pas mettre à jour l'atime. Sous Linux, c'est O_NOATIME.
je viens de tomber sur des architectures ou O_NOATIME n'est pas défini
j'ai donc écrit un code pour tester la disponibilité :
use strict; use warnings; use Fcntl qw(:DEFAULT );
eval { Fcntl->import( qw( O_NOATIME) ); }; if ($@) { print "pas de noatimen"; } else { print "noatimen"; }
qui semble marcher correctement. (j'ai aussi essayé de tester : defined Fcntl::O_NOATIME mais ça ne marche pas ...)
mon problème arrive quand je veux récupérer fabriquer un flag contenant les options de sysopen selon ce que fournit Fcntl :
Certains systèmes ont un flag à l'ouverture pour dire de ne pas mettre à jour l'atime. Sous Linux, c'est O_NOATIME.
je viens de tomber sur des architectures ou O_NOATIME n'est pas défini
Je dirais meme plus: c'est la norme, en fait.
En dehors de linux, un test rapide me montre que ni FreeBSD, ni OpenBSD, ni Solaris n'ont de O_NOATIME.
Par contre, il y a ce genre de choses dans les options de mount, en general (mais c'est global au fs, of course).
gerbier
Marc Espie wrote:
In article <epkjku$q1b$, gerbier wrote:
Certains systèmes ont un flag à l'ouverture pour dire de ne pas mettre à jour l'atime. Sous Linux, c'est O_NOATIME. je viens de tomber sur des architectures ou O_NOATIME n'est pas défini
Je dirais meme plus: c'est la norme, en fait.
En dehors de linux, un test rapide me montre que ni FreeBSD, ni OpenBSD, ni Solaris n'ont de O_NOATIME.
même sous linux : je ne l'ai pas sur une vieille redhat 7.3, avec perl 5.6 (kernel 2.4)
Par contre, il y a ce genre de choses dans les options de mount, en general (mais c'est global au fs, of course).
ça je connaissais déjà, mais j'ai besoin du atime pour connaitre les packages réellement utilisés.
Marc Espie wrote:
In article <epkjku$q1b$1@sxcom1.cnrm.meteo.fr>,
gerbier <eric_nospam_gerbier@meteo.fr.invalid> wrote:
Certains systèmes ont un flag à l'ouverture pour dire de ne pas mettre à
jour l'atime. Sous Linux, c'est O_NOATIME.
je viens de tomber sur des architectures ou O_NOATIME n'est pas défini
Je dirais meme plus: c'est la norme, en fait.
En dehors de linux, un test rapide me montre que ni FreeBSD, ni OpenBSD,
ni Solaris n'ont de O_NOATIME.
même sous linux : je ne l'ai pas sur une vieille redhat 7.3, avec perl
5.6 (kernel 2.4)
Par contre, il y a ce genre de choses dans les options de mount, en
general (mais c'est global au fs, of course).
ça je connaissais déjà, mais j'ai besoin du atime pour connaitre les
packages réellement utilisés.
Certains systèmes ont un flag à l'ouverture pour dire de ne pas mettre à jour l'atime. Sous Linux, c'est O_NOATIME. je viens de tomber sur des architectures ou O_NOATIME n'est pas défini
Je dirais meme plus: c'est la norme, en fait.
En dehors de linux, un test rapide me montre que ni FreeBSD, ni OpenBSD, ni Solaris n'ont de O_NOATIME.
même sous linux : je ne l'ai pas sur une vieille redhat 7.3, avec perl 5.6 (kernel 2.4)
Par contre, il y a ce genre de choses dans les options de mount, en general (mais c'est global au fs, of course).
ça je connaissais déjà, mais j'ai besoin du atime pour connaitre les packages réellement utilisés.
gerbier
après de nombreux essais, voici un code qui marche (même si je ne comprends pas je dois mettre le nom du module malgrès l'import) :
use strict; use warnings; use Fcntl qw(:DEFAULT );