使用不带无限循环的 C++ i 检测文本文件中的更改

Detect change in text file using C++ i without Infinite Loop?

本文关键字:文本 文件 检测 C++ 无限循环      更新时间:2023-10-16

我正在使用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 文档
  • FreeBSD/OSX: kqueue doc
  • Linux: inotify doc
  • Windows: Windows API Doc

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

  • https://github.com/emcrisostomo/fswatch (GPL3, OSX/FreeBSD/Linux/Windows/Solaris(
  • http://doc.qt.io/archives/qt-4.8/qfilesystemwatcher.html (LGPL, OSX/FreeBSD/Windows(