监控文件更改C++ linux

问题描述:

我正在使用linux,并且我有一个有子目录的目录,并且子目录内有文件 。我必须监视文件中的更改。在C++中,我使用boost。我每30秒检查一次所有目录,并检查last_write_time。它主要起作用。但每次执行此操作时,我的CPU都会出现问题,并且我看到只有15%-25%的CPU使用率 仅用于此程序。我已阅读有关inotify。如果我使用inotify,那么CPU使用率或多或少一样,还是会有所提高?我有什么好的替代方案吗?监控文件更改C++ linux

+6

性能将大大提高,因为您不必浏览所有文件和子目录。相反,当文件或目录发生更改时,您会收到通知。 Inotify可能是Linux上的最佳方式。 – 2013-02-19 09:43:19

+0

感谢您输入Joachim。我会尝试。 – user1566277 2013-02-19 09:50:57

当您使用inotify时,您不需要轮询所有文件以检查是否有更改。你会得到一个回叫系统,当观看的文件或目录发生变化时通知你。内核/文件系统已经有了这些信息,所以资源/ CPU使用率不仅仅被移动到另一个应用程序,它实际上被减少了。

Monitor file system activity with inotify提供了更多细节为什么使用inotify,显示其基本用法,并帮助您设置它。

+0

非常感谢您的回答。我会试试看。 – user1566277 2013-02-19 09:52:17

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