2013-02-19 486 views
11

我正在使用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

回答

13

當您使用inotify時,您不需要輪詢所有文件以檢查是否有更改。你會得到一個回叫系統,當觀看的文件或目錄發生變化時通知你。內核/文件系統已經有了這些信息,所以資源/ CPU使用率不僅僅被移動到另一個應用程序,它實際上被減少了。

Monitor file system activity with inotify提供了更多細節爲什麼使用inotify,顯示其基本用法,並幫助您設置它。

+0

非常感謝您的回答。我會試試看。 – user1566277 2013-02-19 09:52:17