17

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

4

2 回答 2

21

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

内核/文件系统已经拥有这些信息,因此资源/CPU 的使用不仅被转移到另一个应用程序中,而且实际上被减少了。

使用 inotify 监控文件系统活动提供了使用 inotify 的更多详细信息,显示其基本用法并帮助您进行设置。

于 2013-02-19T09:46:06.197 回答
4

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

于 2013-02-19T10:11:21.663 回答