POSIX関数またはglibc拡張機能は、幅優先のファイルツリーウォークを実装していますか?

StackOverflow https://stackoverflow.com/questions/1647572

質問

inotifyを使用してファイルアクセスを監視するデーモンを作成していますが、再帰検索で何も見逃さないことが重要です。 この興味深いアイデアを発見し、実装を開始しましたそれ。

ftw()およびftw64()は、幅優先アルゴリズムを使用せず、より多くの「先行予約」を行います。 nftw()は深さ優先のオプションを提供しますが、上葉のレースが心配です。

何か、おそらくGNU拡張機能が欠けていることを望んでいますか?それとも、タイプセーフコールバックを使用して独自の実装を検討しているだけですか(実際には実行しない方がよいことです)。

または、このタイプのアプリケーションでは、深さ優先より幅優先の利点を理解しているのですか?

役に立ちましたか?

解決

nftw()」の仕様を確認し、 FTW_DEPTHフラグは、ポストオーダー(深さ優先)トラバーサルを実行し、ディレクトリノードにアクセスする前にサブディレクトリにアクセスします。

標準アルゴリズムのいずれも幅優先検索を行うとは思わない。

おそらく、nftw()インターフェースに基づいてbfftw()を作成する必要があります。スキャン中に再帰的にアクセスするアイテム(ディレクトリ)をキューに入れる必要があることに注意してください。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top