5

Linuxでinotifyを使用してディレクトリを監視しようとすると、ご存知のとおり、ファイルが作成されるとすぐに(他のプロセスが書き込みを完了する前に)通知が届きます。

他のプロセスによってファイルへの書き込みが完了する前に、ファイルが読み取られないようにする効果的な方法はありますか?

遅延読み取りを追加する可能性があります。しかし、私たち全員が知っているように、それは欠陥があります。

シナリオをもう少し明確にするために; 2つのプロセスは異なるユーザーとして実行されています。予想される負荷は、1秒あたり約数百のファイルが作成されます。

4

4 に答える 4

1

それを別の場所に作成し、書き込み、閉じてから名前を変更します-または、明らかな何かが欠けていますか?

于 2010-07-16T19:54:41.430 に答える
1

あなたの質問に基づくと、あなたは現在IN_CREATE(そして多分IN_OPEN)フラグでディレクトリを監視しているようです。IN_CLOSEファイルが閉じられたときに通知を受け取るように、フラグも使用してみませんか?そこから、何かがファイルを開いているかどうかを追跡するのは簡単であり、まだそれを読みたくないことがわかります。

于 2010-07-16T20:58:06.083 に答える
0

/proc/<pid>/fdファイルがまだ開いているかどうかを確認できます。そこにリストされていない場合は、プロセスがそれを使用していないことを確認できます。

于 2010-07-16T18:32:00.630 に答える
-1

lsofコマンドが役立つかもしれません。開いているすべてのファイルが一覧表示されます。$ man lsof

于 2010-07-25T01:16:18.310 に答える