我在一个C程序中,我需要获得文件的最后修改时间工作。程序的功能是遍历目录中的每个文件,当找到某个文件时,它会调用另一个函数来检查文件的最后修改时间。获取文件的最后修改时间在Linux
在目录中有一个mylog.txt.1
,mylog.txt.2
和mylog.txt.3
等。当我使用ll命令,我可以看到mylog.txt.1
和mylog.txt.2
进行了修改,于5月4日和mylog.txt.3
是在5月3日修正列出目录在Linux。
当程序检查每一个文件但它总是返回5月3日。以下是我正在使用的代码。
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日。
感谢您提供的任何帮助。
也许清理第一:为什么一个大小为20的传递给'strftime'而缓冲区是10多长时间?为什么不检查'stat'的返回值?如果'stat'失败,则解析垃圾值。 – mvds
@mvds遗憾,是一个错字 – Boardy
确保您通过不同的文件路径,也是“attrib.st_ctime”将给“最后状态改变的时候”,如果你正在寻找“最后修改时间”,你需要使用“ attrib.st_mtime“ – ray