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

Use stat to get most recently modified directory

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

如何使用 stat 在 C 中获取最近修改的目录?

我假设您熟悉从给定目录列出所有文件(并提取目录)[如果没有阅读 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);