ボックス: Linux、gcc。
問題 :
このフォルダーを再帰的にスキャンして、何千ものアイテムを含むホーム フォルダーのファイル署名を見つけます。
これまでに行われたこと:
システム コールを使用しmmap()
て、各ファイルの最初の 1k バイトをロードし、ファイル マジック ナンバーを確認します。この方法の欠点は、遭遇したファイルごとに 2 つのシステム コール (例:mmap()
とmunmap()
) を行わなければならないことです。
可能な場合の最善の解決策:
メモリの単一のチャンクを割り当て、この一意のバッファーに各ファイルを (行で) ロードし、処理が完了したら割り当てを解除します。つまり、スキャンしたフォルダーごとに 2 つのシステム コールのみを使用します。
この解決策が現実的であっても、それを達成するためにどのシステムコールを使用すればよいかわかりません!
アドバイスをいただければ幸いです。