アクセス日付を変更するために、C コードからファイルにアクセスしたいと考えています。これはうまくいかないようです:
struct stat fileSt;
lstat(path, &fileSt);
fileSt.st_mtime = time(NULL);
ご協力ありがとう御座います。
utimes()はおそらくそれを行う方法です。utime() は廃止されました。
このようなことは、strace などのツールを使用して判断するのは簡単です。
strace touch -t 01010911 xxx
.
.
open("xxx", O_WRONLY|O_NONBLOCK|O_CREAT|O_NOCTTY|O_LARGEFILE, 0666) = 0
utimes("/proc/self/fd/0", {1230829860, 0}) = 0
欲しいと思いますutime(2)
。それは十分なはずです:
utime(filename, NULL);
ドキュメントは言う:
int utime(const char *filename, const struct utimbuf *times);
[...]
utime() システム コールは、filename で指定された inode のアクセス時刻と変更時刻を、それぞれ time の actime フィールドと modtime フィールドに変更します。
times が
NULL
の場合、ファイルのアクセス時刻と変更時刻は現在の時刻に設定されます。
utime()/utimes() システムコールを見る必要があると思います。私の通常のコンピューターではないので、詳細を調べることができません。