ファイルからパイプ入力を受け取る必要がある Linux 上の C++ アプリケーションで mmap() を使用することは可能ですか?
パイピングにはストリームが含まれているため、mmap() が可能かどうかはわかりませんが、mmap() はすぐにすべてのデータを必要としませんか?
mmap
ストリーム バッファ内のデータは 1 回だけ読み取られるように意図されているため、ストリームできません。また、受信可能なデータの長さは実行時に決定できません。最善の策はmmap
、十分な量のメモリを確保し、それを受信バッファとして使用することです。
関数を使用しstdio
てストリームからデータを読み取る場合、チャンク サイズは問題になりません。ライブラリは自動的に最適なものを選択します (多くの場合、一度に 1 ページずつ)。ただし、使用する場合read
は、ページのチャンクを読み取ると、最高のパフォーマンスが得られます。