Unixの場合:私はFAM
とGamin
を使っていますが、どちらもクライアント/サーバーファイル監視システムを提供しているようです。私はむしろ、カーネルにいくつかのinodeを監視するように指示するシステムを持っていて、イベントが発生したときに私を戻します。 Inotify
その側で最初に有望に見えた:inotify_init1
poll()
を引き起こしたIN_NONBLOCK
を直接渡しましょう。しかし、私が監視しているファイルについてのニュースを入手したいのであれば、定期的に呼び出さなければならないことを理解しました。今私は少しのアイデアがありません。ファイルを非同期に監視する
ファイルを非同期で監視する方法はありますか?
PS:私はまだWindowsを見ていませんが、私はあまりにもそれについていくつかの回答をしたいです。
'inotify'はまさにあなたが探しているものです。 inotifyファイルの説明を 'poll()'リクエストに含めると、読み込み可能なinotifyイベントがあるときに返されます。いつも 'poll()'と同じように、あなたが尋ねたファイル記述子のどれも準備ができてタイムアウトが切れていない限り、それはブロックされます。それで問題はどこですか? – Celada
よく、 'poll()'呼び出しをブロックしているのは、私が非同期と呼んでいるものと全く同じではありません。 – qdii
inotifyイベントがあるかどうか、イベントの)?あなたのソフトウェアがイベントを待機して動作するように構成されている場合、 'poll()'などと呼ばれる何らかのイベントループを既に持っています。代わりにイベントが来るのを待っている間に他のコードを実行したいのであれば、おそらく別のスレッドでそれを行う必要があります。その場合、メインスレッドはイベントループを使用するか、またはノンブロッキングIOを使用すると、 'inotify'の' read() 'をブロックするスレッドを1つ作ることができます。 – Celada