gpt4 book ai didi

c++ - 比较文件统计时间

转载 作者:搜寻专家 更新时间:2023-10-31 01:43:44 25 4
gpt4 key购买 nike

我需要在基于 Unix 的系统上监视文件的修改,但我无权访问 Boost。我想知道以下逻辑是否合理。我认为这可能效率低下,而且我知道我在 while 循环中根本不 sleep 而浪费了大量的周期,但我没有估计文件在两次修改之间会持续多长时间,我需要知道相对较快:

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
}

最佳答案

检查模组时间的逻辑大部分都是合理的。

您只需要错误检查统计返回值 - 以防文件丢失。

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

这意味着您应该错误检查 getTimeLastModified() 返回值值(value)。

如果您碰巧知道需要多久轮询一次文件修改时间,可以在里面调用usleep(unsinged long usec)你的 while 循环。你能做这样的事情吗?

const unsigned long polltime = 5000;    // 5ms
usleep(polltime);

另外要考虑的是是否超时。也就是说,你做什么如果文件从不更改——比如说 10 分钟(或 600000000 微秒)。

关于c++ - 比较文件统计时间,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24638409/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com