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
Odpowiedz
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ć.
Dziękuję za odpowiedź. Spróbuję. – user1566277
http://linux.die.net/man/7/inotify to powinno pomóc w pozbyciu się problemu, przed którym stoisz!
- 1. Monitorowanie katalogu zmian
- 2. Monitorowanie zmian zestawu JComboBox?
- 3. Monitorowanie plików/folderów
- 4. Monitorowanie zmian w plikach w woluminach Docker
- 5. Monitorowanie Mongo dla zmian z Node.js
- 6. Monitorowanie modyfikacji katalogu
- 7. Przenoszenie plików w systemie Linux w C
- 8. Monitorowanie plików mapowanych w pamięci Windows
- 9. Monitorowanie systemu plików za pomocą Haskella
- 10. Monitorowanie linii audio
- 11. Jak monitorować repozytorium git dla zmian?
- 12. Kompilowanie wcześniej przetworzonych zmian plików wyjściowych
- 13. Linux: usuń rozszerzenia plików dla wielu plików
- 14. Monitorowanie nazwanych rur w języku C#
- 15. Linux: Tworzenie automatycznie C++ makefile z podanych plików źródłowych
- 16. Jak skompilować wiele plików .c i .h w gcc linux?
- 17. Monitorowanie po uruchomieniu exe
- 18. Wykrywanie zmian w systemie plików Java
- 19. Monitorowanie katalogu w kakao/kakao Touch
- 20. Monitorowanie folderu pod kątem nowych plików w systemie Windows
- 21. C/C++ Linux GDB API
- 22. Biblioteka przenośnych katalogów/plików w języku C/C++
- 23. Monitorowanie Rsync Progress
- 24. Monitorowanie temperatury procesora
- 25. C# w środowisku linux
- 26. C++ polecenia Linux
- 27. timerów Linux c
- 28. linux gpio c api
- 29. Odzyskiwanie plików usuniętych z systemu Linux
- 30. Rekursywne liczenie plików w katalogu Linux
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. –
Dzięki za wejście Joachim. Spróbuję tego. – user1566277