2017-02-11 2 views
0

Dies erweist sich als unglaublich schwierig. Ich möchte stat verwenden, um den Namen des zuletzt geänderten Verzeichnisses abzurufen. Ich habe viel recherchiert stat, aber ich verstehe wirklich nicht wirklich, wie man es benutzt, also habe ich wirklich keinen Code, um zu zeigen.Verwenden Sie stat, um das zuletzt geänderte Verzeichnis zu erhalten

Wie kann ich das zuletzt geänderte Verzeichnis in C mit stat erhalten?

+0

Wie stat verwenden: http://unix.stackexchange.com/questions/240418/find-latest-files In Um diesen Befehl in c auszuführen execl. – Michael

+0

Wie ist Ihre Liste von Verzeichnissen aufgebaut? Es wird ein Problem mit der Zeit der Überprüfung für jedes Verzeichnis geben; Wenn Sie tausend Verzeichnisse haben, finden Sie vielleicht eine Modifikationszeit t1 für das erste Verzeichnis, und Sie könnten eine Änderungszeit tN im N-ten Verzeichnis mit t1

Antwort

0

Ich nehme an, Sie sind vertraut mit der Auflistung aller Dateien (und extrahieren Verzeichnisse) aus einem bestimmten Verzeichnis [Wenn nicht auf opendir/readdir lesen]. Der Algorithmus wird nicht genau sein, weil ein Verzeichnis nach seiner Zeit berührt werden kann Briefmarke wurde überprüft, aber unter der Annahme, das ist kein Problem, hier ist etwas, das Sie vielleicht

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); 
tun
Verwandte Themen