5

inotify の仕組みを教えてください。私はそれについてウェブで検索しましたが、私が理解したのは、ファイルの変更を確認したい場合は、「読み取り」機能でポーリングを行う必要があるということです。ポーリングせずにファイルが変更されたときに通知するコールバック関数はありますか?

ありがとう、

4

4 に答える 4

2

イベントを処理する GUI ライブラリを使用していると推測しています。

優れた GUI ライブラリには、ファイル記述子を監視する方法があります。GTK ではgtk_input_add_fullです。Qt では、QSocketNotifierが機能する場合があります。

于 2010-11-01T09:10:26.760 に答える
1

libev ライブラリの ev_io 部分を使用できます。これにより、inotify fd が読み取り可能になったときのコールバックを設定できます。

libev のドキュメントは、http://pod.tst.eu/http://cvs.schmorp.de/libev/ev.pod にあります

于 2011-04-20T18:59:26.137 に答える
1

inotify 呼び出しは、ファイル記述子を使用します。ポーリングする代わりに、返された FD をselect()ファミリーの呼び出しで使用できます。これは正確にはコールバック関数ではありませんが、懸念されるオーバーヘッドを削減します。

于 2010-11-01T16:34:25.730 に答える
0

いいえ、inotifyにはポーリングが必要です。

(提案されているように)シグナルを使用してコールバックを登録すると、IMOは通常のポーリングを実行するよりも悪くなります。

于 2010-11-01T08:50:11.097 に答える