Sto lavorando con linux e ho una directory che ha sottodirectory e ci sono file all'interno di sottodirectory. Devo monitorare le modifiche nel file. In C++ sto usando boost. Vado attraverso tutte le directory ogni 30 secondi e controllo il last_write_time. Principalmente, funziona. Ma ogni volta che questa azione viene eseguita, la mia CPU impazzisce e vedo il 15% -25% di utilizzo della CPU solo per questo programma in alto. Ho letto di inotify. Se uso inotify avrei l'utilizzo della CPU più o meno uguale o sarebbe migliorato? Ci sono buone alternative a quello che sto facendo?modifiche al file di monitoraggio C++ linux
risposta
Quando si utilizza inotify, non è necessario eseguire il polling per tutti i file per verificare se sono presenti modifiche. Ottieni un sistema di callback che ti avvisa quando un file o una directory guardati vengono cambiati.
Il kernel/file system ha già questa informazione, quindi l'utilizzo della risorsa/CPU non viene semplicemente spostato su un'altra applicazione, ma viene ridotto.
Monitor file system activity with inotify fornisce ulteriori dettagli sul perché utilizzare inotify, mostra il suo utilizzo di base e consente di configurarlo.
Mille grazie per la tua risposta. Ci proverò. – user1566277
http://linux.die.net/man/7/inotify questo dovrebbe aiutarti a sbarazzarti del problema che stai affrontando!
- 1. modifiche apportate ai file di monitoraggio dei volumi Docker
- 2. file di monitoraggio del watchdog python per le modifiche
- 3. monitoraggio per modifiche nei file in tempo reale
- 4. Monitoraggio delle modifiche in Visual Studio
- 5. Monitoraggio delle modifiche ai campi utilizzando mongoose.js
- 6. modifiche al riferimento a variabili in C++
- 7. Periodo di conservazione in SQL Server 2008 Monitoraggio delle modifiche
- 8. Monitoraggio di Mongo per le modifiche con Node.js
- 9. UIBackgroundMode posizione e modifiche significative alla posizione con monitoraggio regione
- 10. Evidenzia modifiche al buffer
- 11. Linux C: output interattivo
- 12. Monitoraggio di chi apporta modifiche a SQL Server nell'applicazione C# o SQL Server
- 13. md5sum di file in Linux C
- 14. Listener di modifiche al volume?
- 15. Aggiungi data al nome file in linux
- 16. Unione di modifiche al file XML in git
- 17. Garbage Collector di monitoraggio in C#
- 18. Monitoraggio di una linea audio
- 19. Creare un file in Linux usando C
- 20. Monitoraggio C# /. NET compiti flusso
- 21. Monitoraggio file mappati memoria Windows
- 22. (Windows) Chiamate API di monitoraggio in C
- 23. Divisione di un file in linux in base al contenuto
- 24. accesso al file e alla directory di controllo su linux
- 25. DOP: come accedere al file di Microsoft Access su Linux?
- 26. Ripristino cancellato di file Linux
- 27. Confronto tra le modifiche apportate al file corrente tramite Git
- 28. Come ascoltare le modifiche al file system MAC - kFSEventStreamCreateFlagWatchRoot
- 29. Scrittura su FIFO FILE, Linux & Mono (C#)
- 30. come esaminare C++ .o file sotto linux?
Le prestazioni saranno notevolmente migliorate, in quanto non è necessario passare attraverso tutti i file e le sottodirectory. Invece riceverai una notifica quando un file o una directory sono cambiati. Inotify è probabilmente il modo migliore per andare su Linux. –
Grazie per l'input Joachim. Ci proverò. – user1566277