1

fopen を呼び出すときに C 関数を呼び出したい C の状況があります。これは、ある種の「仮想ファイル」が必要であることを意味します。この「仮想ファイル」で fopen を使用する場合、関数を呼び出してファイル内のデータを生成したいと考えています。

これは可能ですか?

ありがとう!

4

3 に答える 3

1

関数を呼び出して出力を生成する直接的な方法はありません。ただし、を使用して別のプロセスを呼び出すことができpopen()ます。これで十分な場合があります。

于 2012-11-24T06:33:17.323 に答える
1

不可能な標準Cでは、AFAIK、

GNU Glibcを備えたシステム(GNU / Linuxなど)を使用する場合は、特にスルーを介してカスタムストリームfopencookieを使用できます。

標準C++ライブラリも(独自のバリアントの)ストリームを提供し、独自のストリームを持つことができることに注意してください。

GNU / Linuxでは、カーネルを使用して、ユーザースペースにFUSEを使用してファイルシステムを提供することもできます。

于 2012-11-24T06:35:48.467 に答える
1

これは、ある種の「仮想ファイル」が必要であることを意味します。この「仮想ファイル」で fopen を使用する場合、関数を呼び出してファイル内のデータを生成したいと考えています。

そのためには、独自のファイル システムを作成する必要があります。幸運なことに、他の人が難しい部分をやってくれました: FUSEを見てください。たとえば、「ファイル」が実際には RSS フィードであるファイル システムを作成できます。次に、標準のファイル呼び出しを使用して、これらのフィードからデータを読み取ることができます。

さて、このアプローチを取るべきかどうかは別の問題です。ファイルを読み取るコードを制御できる場合は、カスタム ファイル システムのインストールを要求するよりも、適切なデータ提供関数を呼び出す方がおそらく簡単です。

于 2012-11-24T06:42:35.727 に答える