1

子プロセスを生成し、それが変更、作成、または削除するファイルを知る必要があります。

sudo ができないので dtrace が使えません。

FSEvents は、システム上のすべてのプロセスで発生した変更を報告し、自分の子プロセスだけに関心があるため、使用できません。

4

1 に答える 1

4

DYLD_INSERT_LIBRARIES(Mac OS の に相当する) を使用して、関心のある libc ルーチンまたはシステム コールの独自の監視ルーチンを挿入することを検討しLD_PRELOADます。たとえば、my_open()関心のあるトレースを実行するルーチンを作成してから、open()残りの作業を行うには、実際の libcを使用します。トラップするすべてのファイルシステム関連の呼び出し (開く、閉じる、読み取る、書き込む、名前を変更するなど) に対してこれを行う必要がありDYLD_INSERT_LIBRARIESます。子プロセスを生成する前に、環境変数を設定できるはずです。 、ルートである必要はありません。

これに関する詳細と例は、Amit Singh による「Mac OS X Internals: A Systems Approach」の第 2 章にあります。コピーをお持ちでない場合は、Google ブックスで関連するセクションを読むことができます。

于 2009-11-07T16:12:00.100 に答える