监控文件更改c ++ linux

时间:2013-02-19 09:40:36

标签: c++ linux file-monitoring

我正在使用linux,我有一个目录,其中包含子目录和文件 在子目录中。我必须监视文件中的更改。在C ++中我使用boost。我每隔30秒检查一次所有目录并查看last_write_time。原则上,它的工作原理。但每次执行此操作时,我的CPU都会疯狂,我看到15%-25%的CPU使用率 只是为了这个程序在顶部。我读过关于inotify的文章。如果我使用inotify,我会有或多或少相同的CPU使用率,还是会改进?对我正在做的事情有什么好的选择吗?

2 个答案:

答案 0 :(得分:15)

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

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

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

答案 1 :(得分:1)

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