in reply to Re^2: Reading from file- not change atime
in thread Reading from file- not change atime
... and don't want anyone to know
Note that there's also ctime, which on most current Unix systems has the semantics "inode change time", and restoring atime is considered an inode change operation. In other words, even though atime could be restored, those who "really want to know" would check ctime in this case...
#!/usr/bin/perl -w use strict; sub show_times { my ($f, $note) = @_; printf "atime=%d, mtime=%d, ctime=%d - %s\n", (stat($f))[8..10], $ +note; } my $file = shift or die $!; # save atime my ($atime, $mtime) = (stat($file))[8,9]; show_times($file, "initially"); # read from file { open my $fh, '<', $file or die $!; <$fh>; } show_times($file, "after read"); # restore atime utime($atime, $mtime, $file) or die "utime: $!"; show_times($file, "after atime restored");
$ touch somefile && sleep 2 && ./fix_accesstime.pl somefile atime=1386693000, mtime=1386693000, ctime=1386693000 - initially atime=1386693002, mtime=1386693000, ctime=1386693000 - after read atime=1386693000, mtime=1386693000, ctime=1386693002 - after atime res +tored
Note that even though atime is restored, ctime is still being updated.
In Section
Seekers of Perl Wisdom