1

ファイルからパイプ入力を受け取る必要がある Linux 上の C++ アプリケーションで mmap() を使用することは可能ですか?

パイピングにはストリームが含まれているため、mmap() が可能かどうかはわかりませんが、mmap() はすぐにすべてのデータを必要としませんか?

4

1 に答える 1

1

mmapストリーム バッファ内のデータは 1 回だけ読み取られるように意図されているため、ストリームできません。また、受信可能なデータの長さは実行時に決定できません。最善の策はmmap、十分な量のメモリを確保し、それを受信バッファとして使用することです。

関数を使用しstdioてストリームからデータを読み取る場合、チャンク サイズは問題になりません。ライブラリは自動的に最適なものを選択します (多くの場合、一度に 1 ページずつ)。ただし、使用する場合readは、ページのチャンクを読み取ると、最高のパフォーマンスが得られます。

于 2013-10-17T13:22:36.380 に答える