3

特定のプログラム呼び出しのファイルの読み取り/書き込みを追跡できるようにしたいと考えています。関連するファイル名だけで、実際のトランザクションに関する情報は必要ありません。

これに対するクロスプラットフォームのソリューションはありますか?
さまざまなプラットフォーム固有のメソッドとは何ですか?
Linux では、strace/ptrace があることを知っています (より高速な方法があれば、それも良いでしょう)。
Mac OS には ktrace があると思います。
Windowsはどうですか?

また、後でファイル アクセスをブロック (ストール アウト) できるようになれば素晴らしいと思います。

ありがとう!

4

3 に答える 3

1

短い答えはノーです。多くのプラットフォーム固有のソリューションがあり、それらはすべて同様のインターフェイスを備えている可能性がありますが、ファイル システムはプラットフォーム固有である傾向があるため、それらは本質的にクロス プラットフォームではありません。


各プラットフォームでうまくやるにはどうすればよいですか?

繰り返しますが、プラットフォームによって異なります :) Windows の場合、飛行中の読み取り/書き込みを追跡する場合は、IFS を使用する必要がある場合があります。変更の通知を受け取りたいだけの場合は、ReadDirectoryChangesWまたは NTFS 変更ジャーナルを使用できます。

NTFS 変更ジャーナルを使用することをお勧めします。これは、信頼性が高くなる傾向があるためです。

于 2008-08-21T21:47:59.453 に答える
0

プログラムが監視したいプロセスを起動する限り、デバッガーを書くことができ、プロセスが開始または終了するたびに通知されます。プロセスの開始時に、DLL を挿入して、個々のプロセスごとに CreateFile システム コールをフックできます。その後、フックはパイプまたはソケットを使用して、ファイルのアクティビティをデバッガーに報告できます。

于 2010-01-14T06:42:42.957 に答える
0

Windows では、コマンド ライン ツールのハンドルまたは GUI バージョンのProcess Explorerを使用して、特定のプロセスが開いているファイルを確認できます。

独自のプログラムでこの情報を取得したい場合は、Microsoft のIFS キットを使用してファイル システム フィルターを作成できます。ファイル システム フィルタは、すべてのプロセスのすべてのファイル システム操作を表示します。ファイル システム フィルタは、AV ソフトウェアで使用され、ファイルを開く前にスキャンしたり、新しく作成されたファイルをスキャンしたりします。

于 2008-08-21T20:32:31.303 に答える