変更できないレガシーライブラリを使用して一部のデータを処理する必要があります。私の問題は、結果を保存するために単純な古いFILEハンドルが必要であり、ディスクに何も書き込まないようにする必要があることです。
これを行う標準的な方法はないことを理解しましたが、Windows API、Boostなどを使用して、メモリをいくらか指すファイルハンドルを取得することは可能ですか?
ディスクアクセスが(体系的に)実行されないことが明示的に保証されているソリューションはどこにも見つかりませんでした。
fopen
パイプ構文を使用して、パイプを実行できると思います。
fopen("\\\\.\\pipe\\WritePipe", "w+");
事前にを使用してパイプを作成する必要がありますが、作成するとCreateNamedPipe
、データの処理にパイプを使用できるようになります。
アプリがハングしないように、パイプから読み取るスレッドを作成する必要がありますが、ニーズには合っているはずです(ファイルシステムにアクセスできない)。
試してみてください
fmemopen
tbert の答え:
正しい答えを探してこのスレッドに出くわした他の人のために: はい、必要なセマンティクスに応じて、メモリを FILE 記述子として使用する標準に準拠した方法があります: fmemopen または open_memstream。
http://pubs.opengroup.org/onlinepubs/9699919799/functions/fmemopen.html
http://pubs.opengroup.org/onlinepubs/9699919799/functions/open_memstream.html