17

私はLinuxで作業しており、サブディレクトリを持つディレクトリがあり、サブディレクトリ内にファイルがあります。ファイルの変更を監視する必要があります。C++ ではブーストを使用しています。30 秒ごとにすべてのディレクトリを調べて、last_write_time をチェックします。主に、それは動作します。しかし、このアクションが実行されるたびに、CPU が狂ってしまい、このプログラムだけで 15% から 25% の CPU 使用率が一番上に表示されます。inotify について読みました。inotify を使用すると、CPU 使用率はほぼ同じになりますか、それとも改善されますか? 私がしていることに代わる良い方法はありますか?

4

2 に答える 2

21

inotify を使用する場合、変更があるかどうかを確認するためにすべてのファイルをポーリングする必要はありません。監視されているファイルまたはディレクトリが変更されたときに通知するコールバック システムを取得します。

カーネル/ファイルシステムにはすでにこの情報があるため、リソース/CPU の使用量は別のアプリケーションに移動されるだけでなく、実際に削減されます。

「inotify を使用してファイル システムのアクティビティを監視する」では、inotify を使用する理由の詳細を説明し、基本的な使用法を示し、設定を支援します。

于 2013-02-19T09:46:06.197 に答える
4

http://linux.die.net/man/7/inotifyこれは、直面している問題を解決するのに役立つはずです!

于 2013-02-19T10:11:21.663 に答える