特定のディレクトリで最も古いファイルを削除する関数が必要でした。私はシステムコールバック関数を使用し、Cでコードを書いています.C++から呼び出すことができます。
#include <stdio.h>
#include <dirent.h>
#include <string.h>
#include <sys/stat.h>
#include <stdlib.h>
#include <time.h>
#include <unistd.h>
void directoryManager(char *dir, int maxNumberOfFiles){
DIR *dp;
struct dirent *entry, *oldestFile;
struct stat statbuf;
int numberOfEntries=0;
time_t t_oldest;
double sec;
time(&t_oldest);
//printf("now:%s\n", ctime(&t_oldest));
if((dp = opendir(dir)) != NULL) {
chdir(dir);
while((entry = readdir(dp)) != NULL) {
lstat(entry->d_name, &statbuf);
if(strcmp(".",entry->d_name) == 0 || strcmp("..",entry->d_name) == 0)
continue;
printf("%s\t%s", entry->d_name, ctime(&statbuf.st_mtime));
numberOfEntries++;
if(difftime(statbuf.st_mtime, t_oldest) < 0){
t_oldest = statbuf.st_mtime;
oldestFile = entry;
}
}
}
//printf("\n\n\n%s", oldestFile->d_name);
if(numberOfEntries >= maxNumberOfFiles)
remove(oldestFile->d_name);
//printf("\noldest time:%s", ctime(&t_oldest));
closedir(dp);
}
int main(){
directoryManager("/home/myFile", 5);
}
最後に変更された統計情報が必要なように聞こえます。 –
可能性のある繰り返し[this](http://stackoverflow.com/questions/4842508/how-can-i-determine-a-files-creation-date-in-windows) – rishi