13

アクセス日付を変更するために、C コードからファイルにアクセスしたいと考えています。これはうまくいかないようです:

struct stat fileSt;
lstat(path, &fileSt);
fileSt.st_mtime = time(NULL);

ご協力ありがとう御座います。

4

4 に答える 4

14

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
于 2009-03-16T18:58:07.700 に答える
10

欲しいと思いますutime(2)。それは十分なはずです:

utime(filename, NULL);

ドキュメントは言う:

int utime(const char *filename, const struct utimbuf *times);

[...]

utime() システム コールは、filename で指定された inode のアクセス時刻と変更時刻を、それぞれ time の actime フィールドと modtime フィールドに変更します。

times がNULLの場合、ファイルのアクセス時刻と変更時刻は現在の時刻に設定されます。

于 2009-03-16T18:55:00.953 に答える
1

utime()/utimes() システムコールを見る必要があると思います。私の通常のコンピューターではないので、詳細を調べることができません。

于 2009-03-16T18:56:40.167 に答える