2009-05-18 8 views
2

私はLinuxのrhel5、カーネル2.6.18、glibc 2.5-18でiNotifyを使用しようとしています。私はイベントをワンショットとして定義しませんでしたが、何らかの理由でそれは私のように動作します。影響は、各イベントの後に時計を追加する必要があることです。 iNotifyを使用した人はいますか?別の問題は、イベントオブジェクトに返されるマスクにIN_ONE_SHOTというフラグが1つだけ含まれていることです。Linux iショットとイベントマスク問題をiNotify

+0

小さなコードを表示できますか? – Duck

+0

straceを試してください。それはあなたのコードが期待しているシステムコールを行っているかどうかを確認する良い方法です。 –

答えて

0

可能な限り小さな例を書き、それをテストします。あなたが話している振る舞いを示している場合は、あなたの質問にそれを加えてください。それが正常に動作する場合は、もう少しコードを追加してもう一度テストしてください。エラーが再現するまで、またはコードが正常に動作するまで繰り返してください。多くの場合、私は、おもちゃプログラムを構築すると、私が大きなプログラムで見ることができなかった間違ったことを正確に教えてくれることが分かります。

0

ファイルが削除されているため、inotifyが暗黙的に時計を削除している可能性があります。この動作は、the manual pageによって微妙に参照されます(IN_IGNOREDイベントのセクションを参照)。これが起きているかどうかは、readへの呼び出しによって設定されたinotify_eventにフラグIN_IGNOREDが設定されているかどうかをチェックすることで確認できます。

inotify delete_self when modifying and saving a fileも参照してください。なぜなら、変更が単なるものだと考えている間に、あなたの知らない間にファイルが削除されることがある理由があります。