2013-02-19 22 views
11

Pracuję z linuxem i mam katalog, który ma podkatalogi i są pliki wewnątrz podkatalogów. Muszę monitorować zmiany w pliku. W C++ używam boost. Przechodzę przez wszystkie katalogi co 30 sekund i sprawdzam last_write_time. Zasadniczo to działa. Ale za każdym razem, gdy ta czynność jest wykonywana, mój procesor zaczyna działać i widzę 15% -25% użycia procesora tylko dla tego programu na górze. Czytałem o inotify. Jeśli użyję inotify, będę miał mniej więcej takie samo użycie procesora, czy też zostanie poprawiony? Czy istnieją dobre alternatywy dla tego, co robię?monitorowanie zmian plików C++ linux

+6

Wydajność znacznie się poprawi, ponieważ nie trzeba przechodzić przez wszystkie pliki i podkatalogi. Zamiast tego otrzymasz powiadomienie o zmianie pliku lub katalogu. Inotify to prawdopodobnie najlepszy sposób na Linuksa. –

+0

Dzięki za wejście Joachim. Spróbuję tego. – user1566277

Odpowiedz

13

Podczas korzystania z inotify nie trzeba odpytywać za wszystkie pliki, aby sprawdzić, czy są jakieś zmiany. Otrzymasz system oddzwaniania, który powiadamia cię o zmianie pliku obserwowanego pliku lub katalogu.

Jądro/system plików ma już tę informację, więc użycie zasobu/procesora nie zostało przeniesione do innej aplikacji, w rzeczywistości jest zmniejszone.

Monitor file system activity with inotify dostarcza więcej szczegółów, dlaczego warto używać inotify, pokazuje podstawowe użycie i pomaga skonfigurować.

+0

Dziękuję za odpowiedź. Spróbuję. – user1566277