【问题标题】:monitoring file changes c++ linux监控文件更改 c++ linux
【发布时间】:2013-02-03 22:41:27
【问题描述】:

我正在使用 linux,我有一个包含子目录和文件的目录 子目录里面。我必须监视文件中的更改。在 C++ 中,我使用的是 boost。我每 30 秒浏览一次所有目录并检查 last_write_time。主要是,它有效。但是每次执行此操作时,我的 CPU 都会发疯,我看到 15%-25% 的 CPU 使用率 只是为了这个程序在顶部。我已经阅读了有关 inotify 的信息。如果我使用 inotify,我的 CPU 使用率会或多或少相同,还是会得到改善?我正在做的事情有什么好的选择吗?

【问题讨论】:

  • 性能将大大提高,因为您不必遍历所有文件和子目录。相反,当文件或目录发生更改时,您会收到通知。 Inotify 可能是在 Linux 上运行的最佳方式。
  • 感谢 Joachim 的输入。我会试试的。

标签: c++ linux file-monitoring


【解决方案1】:

当您使用 inotify 时,您不需要轮询所有文件以检查是否有更改。当监视的文件或目录发生更改时,您会收到一个回调系统通知您。

内核/文件系统已经有了这些信息,所以资源/CPU的使用不仅仅是转移到另一个应用程序,它实际上是减少了。

Monitor file system activity with inotify 提供更多使用 inotify 的详细信息,展示其基本用法并帮助您进行设置。

【讨论】:

    【解决方案2】:

    http://linux.die.net/man/7/inotify这应该可以帮助您摆脱您面临的问题!

    【讨论】:

      猜你喜欢
      • 2023-03-08
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-04-29
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多