c++ - 使用没有无限循环的 C++ i 检测文本文件中的更改?

标签 c++ algorithm c++11 file-io

我正在使用 C++ 读取文本文件。我使用第一行来指示文件是否已更改。例如,文本文件将如下所示:

  0
  9

更改文本文件后,我将翻转第一行。因此,新的文本文件将如下所示:

  1
  5

C++ 代码将在从文本文件中读取新输入后执行其功能。目前,我正在使用无限循环来检测文本文件中的更改。是否有任何替代实现来使用 C++ 检测文本文件中的更改?到目前为止,这是我的解决方案:

   do{
      std::ifstream reader;
      reader.open(READFILE);
      if (!reader){
       printf("Error opening the reader file!!");
       exit(1);
     }
     reader >> status >> variable;

     if(status != reader_file_status){
       reader_file_status = status;
       return true
     }
  } while(true);

最佳答案

文件系统更改事件是特定于平台的,因此您需要针对不同平台的不同解决方案。

  • osx:文件系统事件 API doc
  • freebsd/osx: kqueue doc
  • linux: inotify doc
  • window : window API doc

似乎有一些跨平台包装器。快速谷歌搜索显示:

关于c++ - 使用没有无限循环的 C++ i 检测文本文件中的更改?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48598037/

相关文章:

c++ - 64 位地址

algorithm - 旅行商 (TSP) 表现

c++ - 用于线程的标准库版本 "Wait for Alert/Event"

c++ - 如何声明指针成员禁止删除它

c++ - 关闭任何句柄后,CreateFile FILE_FLAG_DELETE_ON_CLOSE 失败

c# - 从 UWP c++/cx 调用 UWP C# 代码

c++ - 优化昂贵函数的调用次数

java - Floyd-Warshall 算法逻辑 - 卡住

c++ - 实现非成员 IO 操作符

c++ - 编译 C++ 线程