「find」が「stat」または「fstat」になぜそんなに似ているのですか?

「find」が「stat」または「fstat」になぜそんなに似ているのですか?

/usr/bin/find何もせずに意味のあるものを見せようとしていますがstat、まだ有用な結果が出ていません。強制的に抑制すると、statfind はサブディレクトリにまったく降りません。

システムコールのマニュアルページに示すように、そこにはフィールドがgetdentsあるため、決定を下すために必要ないくつかの情報がすでに存在している必要があります。d_typefind

statなぜ無視する-Lか、-H何を選ぶべきですか?

ベストアンサー1

ソースを使用して、ルーク!

GNUfindソースコード(バージョン4.2.2を見ています)でディレクトリツリーをナビゲートするコードは、gnulib/lib/fts.c次のコメントで1123行にあります。

このエントリに対する fts_read の関係を記録します。ほとんどの場合、単にfts_statですが、d_type情報を利用して不要なstat呼び出しを最適化できます。つまり、FTS_NOSTATが適用され、我々がシンボリックリンク(FTS_PHYSICAL)に従わず、d_typeがそれを示す場合いいえディレクトリであれば、まったく計算する必要はありません。その場合はいディレクトリを作成して(現在の)デバイスとinode番号を取得するには、とにかくそれを計算する必要があります。いつか、d_inoが有効であることが知られているディレクトリを最適化することもできます。

だから彼らはあなたが説明した最適化について考えましたが、それを実装しませんでした。

おすすめ記事