使用 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);
事实证明这非常困难。我想使用 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);