2011-09-13 13 views
0

私は簡単なquesitonを得ました。私はFILE* fpを私のライブラリの一つでfopen/fwriteに、そしてファイルにはfclose()を、別のライブラリにはfpに、fpには使用しています。他のライブラリがファイルハンドルを取得する最も良い方法は何ですか?ライブラリ間でFILEポインタを共有する

+3

一般に、同じコンテキスト/タスク内の同じレベルのファイルの開閉を処理することがベストプラクティスと考えられます。メモリの割り当て/割り当て解除と同じです。 (ただし、あなたの場合は特定の要件があるかもしれません) –

+3

これは奇妙な要件です。奇妙な要求は、しばしば(必ずしもとは限りません)誤ったデザインの示唆や問題の解決に間違いを起こします。 –

+0

両方のライブラリが同じランタイムを使用していますか? –

答えて

6

2つのライブラリが互いに話している場合、最初のライブラリは関数呼び出しでFILE*を2番目のライブラリに渡す必要があります。

ライブラリが互いに通信しない場合、メインアプリケーションは最初のライブラリからFILE*を取得し、2番目のライブラリに渡します。または、アプリケーションがFILE*を所有し、既に開いている最初のライブラリに渡してから、2番目のライブラリに渡して終了し、最後にアプリケーションでFILE*を終了する必要があります。 FILE*の代わりにファイル名が必要なライブラリを扱おうとすると、ファイルのようなものがあっても名前がないものがあると非常に苛立つことがあります。

関連する問題