2014-09-10 89 views
0

我使用的inotify在Linux上監控目錄幾級後的手錶添加到新創建的目錄。我的目錄有50個子目錄,我的目錄樹有20個深度。我能夠監視目錄及其所有子目錄,直到這一點。我使用C++ STL向量來保存每個目錄路徑及其各自的觀察描述符。當我遞增添加8或10個新目錄,即添加新的8-10新級別時,我會收到有關任何事件的通知,直到目錄樹中的第28或第30級爲止。如果我在28或30級內創建一個新目錄比我沒有收到任何通知。的inotify - 無法在目錄樹

也面臨這個問題的任何機構。

回答

0

您應該添加一些調試信息到你的應用程序中顯示所創建的手錶的數量。也許你正在達到數量限制。

您可以sysctl查詢max_user_watches值:

$ sudo sysctl fs.inotify.max_user_watches 
fs.inotify.max_user_watches = 8192 

我也建議你檢查的inotify_add_watch()在你的程序的返回值。如果達到手錶總數的用戶限制,則返回ENOSPC;如果路徑名稱是工具長(可能會發生,因爲您創建了深度目錄樹),則返回ENAMETOOLONG