2013-02-19 15 views
11

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

+6

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. –

+0

Grazie per l'input Joachim. Ci proverò. – user1566277

risposta

13

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.

+0

Mille grazie per la tua risposta. Ci proverò. – user1566277

Problemi correlati