使用stat来获取最近修改过的目录

时间:2017-02-11 00:31:33

标签: c stat

事实证明这非常困难。我想使用stat来获取最近修改过的目录的名称。我已经研究过stat了很多,但老实说我真的不明白如何使用它,所以我真的没有任何代码可以显示。

如何使用stat

在C中获取最近修改过的目录

1 个答案:

答案 0 :(得分:0)

我假设您熟悉从给定目录中列出所有文件(并提取出目录)[如果没有在opendir / readdir上读取]。算法将不准确,因为目录可以在其时间戳之后被触及被检查但是假设这不是一个问题,这是你可能正在做的事情

    DIR *dirp = opendir(".");
    struct stat dStat;
    time_t latest = 0;
    while ((dp = readdir(dirp)) != NULL) {
            memset(&dStat, 0, sizeof(dStat));
            if (stat(dp->d_name, &dStat) < 0) {
                    printf("Error getting info on file\n");
                    continue;
            }
            // If not a directory skip 
            if ((dStat.st_mode & S_IFDIR) != S_IFDIR) {
                    continue;
            }
            // check with the latest timestamp
            if (dStat.st_mtime > latest) {
                    // On finding a more recent file switch that to latest
                    strcpy(dName, dp->d_name);
                    latest = fStat.st_mtime;
            }
    }
    closedir(dirp);
    printf("Most recently touched directory %s\n", dName);