获取Linux中文件的最后修改时间

我正在使用C程序,需要获取文件的最后修改时间。程序要做的是一个函数循环遍历目录中的每个文件,当找到特定文件时,它将调用另一个函数来检查文件的最后修改时间。

在该目录下有一个mylog.txt.1mylog.txt.2mylog.txt.3等当我使用ll命令我可以看到,列出目录在linux

mylog.txt.1mylog.txt.2进行了修改,在5月4日,并mylog.txt.3于5月3日进行了修改。

但是,当程序检查这些文件中的每个文件时,它总是会返回3rd may。下面是我正在使用的代码。

void getFileCreationTime(char *filePath)

{

struct stat attrib;

stat(filePath, &attrib);

char date[10];

strftime(date, 10, "%d-%m-%y", gmtime(&(attrib.st_ctime)));

printf("The file %s was last modified at %s\n", filePath, date);

date[0] = 0;

}

我尝试了的所有不同变体st_ctime,即st_mtime和,st_atime但是它们都返回5月3日。

感谢您的任何帮助,您可以提供。

回答:

这是时区很重要的情况之一。你得到gmtimest_mtime。您应该改用localtimeviz。

strftime(date, 20, "%d-%m-%y", localtime(&(attrib.st_ctime)));

这是因为ls使用了您的时区信息,并且当您将其gmtime用作显示的一部分时,它故意省略了任何时区信息。

以上是 获取Linux中文件的最后修改时间 的全部内容, 来源链接: utcz.com/qa/431342.html

回到顶部