2017-02-11 94 views
0

这证明是非常困难的。我想使用stat来获取最近修改的目录的名称。我对stat进行了相当多的研究,但我真的不知道如何使用它,所以我没有任何代码可以显示。使用状态获取最近修改的目录

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

+0

如何使用统计:http://unix.stackexchange.com/questions/240418/find-latest-files 在为了在c中使用execl执行这个命令。 – Michael

+0

你的目录列表是如何构建的?每个目录的检查时间都会有问题;如果您有一千个目录,则可能会为第一个目录找到修改时间t1,并且您可能会在第n个目录中找到一个修改时间tN,t1

回答

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);