ディレクトリの内容を監視する方法を探しています。私は2つのアプローチを試みました。ディレクトリ Cocoa/Cocoa Touchでディレクトリを監視する
を監視するためのディレクトリに
ディレクトリの内容を監視する方法を探しています。私は2つのアプローチを試みました。ディレクトリ Cocoa/Cocoa Touchでディレクトリを監視する
を監視するためのディレクトリに
と私の実験監視ファイルを文書化しています。しかし、あなたが主張するなら、ここに答えがあります:
あなたの袖を巻いたり、カーネルダイビングをすることなくこれを行う方法はありません。
FSEventsフレームワークを使用するのは、ファイルの作成、編集、または削除(属性と関連する作業)の際に通知を送信することです。概要はhereであり、誰かがAPIの周りにObjective C wrapperと書いていますが、試していません。しかし、概観は、ファイルの変更についての部分、kqueueのようなディレクトリについては言及していません。私はhereのコードをヘッダファイルhereと共に使用して、私自身のロガーをコンパイルして、個々のファイルレベルでイベントを取得することができました。ロガーをバックグラウンドで実行して監視するには、アプリにコードを書く必要があります。
また、すべてのファイルシステムのアクティビティを常に監視する「fs_usage」コマンドを参照してください(そして、私はすべてをとしています)。これはすでにダーウィンに付属しているので、自分でコンパイルする必要はありません。 kqueueを使用してディレクトリの変更を監視すると同時に、 "fs_usage"からの出力を監視することができます。ディレクトリが変更されたことをkqueueから通知された場合は、fs_usageの出力を調べ、書き込まれたファイルを確認し、変更されたディレクトリに対してファイル名を確認することができます。 fs_usageはFirehoseですので、Grepと一緒にいくつかのオプションを使用してそれを守る準備をしてください。
FSEventsロガーとfs_usageの両方がルートアクセスを必要とするため、OS Xアプリケーションで使用するには、事前にユーザーの承認を得る必要があります(Authorization Services Programming Guideの情報それをするために)。
これはすべてひどく複雑に聞こえる場合は、それが原因です。しかし、少なくともあなたは難しい方法を見つける必要はありませんでした!
FOSventsはiOSで利用できますか? iOSプログラムはfs_usageのような任意のコマンドを実行できますか? –
iOSの場合、FSEventsは本当に必要ではありません。すべてのアプリケーションがサンドボックス化されているため、Documentsフォルダ内のファイルを操作して自分自身を引き起こさないファイルシステムイベントはありません。私はあなたがiCloudファイルシステムでFSEventsを使用できることを示すiOS5についての注意を見ました。もしあなたが* jailbroken * phones(ささやき)について話しているのであれば、FSEventsが送信される可能性はありますが、すばらしいGoogleの検索では決して確定しませんでした。彼らはfs_usageのようなツールを持っているのではないかと疑いますが、自分でコンパイルすることはできます... – sgress454
Mac OS XとiOSの両方をターゲットにしていますか? –
私はOS Xをターゲットにしていますが、iOSで動作するかどうかについても関心がありました。 – DHamrick