C++ 比较文件统计时间
我需要注意在基于Unix的系统上修改文件,而我没有访问Boost的权限。我想知道下面的逻辑是否正确。我认为这可能效率低下,而且我知道在while循环中根本不睡觉是在浪费大量的周期,但我无法估计文件在修改之间需要多长时间,我需要相对快速地知道:C++ 比较文件统计时间,c++,file,time-t,time.h,C++,File,Time T,Time.h,我需要注意在基于Unix的系统上修改文件,而我没有访问Boost的权限。我想知道下面的逻辑是否正确。我认为这可能效率低下,而且我知道在while循环中根本不睡觉是在浪费大量的周期,但我无法估计文件在修改之间需要多长时间,我需要相对快速地知道: std::time_t getTimeLastModified(const char* filename){ struct stat fileattrib; stat(filename, &fileattrib); re
std::time_t getTimeLastModified(const char* filename){
struct stat fileattrib;
stat(filename, &fileattrib);
return fileattrib.st_mtime;
}
int main(){
std::time_t file1_modified_time = getTimeLastModified(coor_file.c_str());
while(difftime(getTimeLastModified(coor_file.c_str()),file1_modified_time)==0){}
// If program execution gets here, file has been modified
}
检查mod时间的逻辑基本上是合理的 您只需要错误检查stat返回值,以防文件丢失
struct stat fileattrib;
int status = stat(filename, &fileattrib); // Get file stats
if (status < 0)
return((std::time_t)-1); // File missing?
return(fileattrib.st_mtime);
另外要考虑的是是否超时。也就是说,你是做什么的
如果文件从未更改,比如10分钟(或600000000微秒)。如果内核中有inotify,为什么不使用它呢?inotify在我正在使用的生产系统中不可用。我无法在此系统上重新编译内核,并且在系统上也没有root访问权限。
const unsigned long polltime = 5000; // 5ms
usleep(polltime);