7

同じファイルを開いて読み取る (書き込みではない) マルチスレッド アプリケーションがあります。スレッドごとに異なるファイル記述子を開いています (ただし、それらはすべて同じファイルを指しています)。次に、各スレッドはファイルを読み取り、ファイルを閉じて、EOF に達した場合に再度開くことができます。これでよろしいですか?ファイル記述子で fclose() を実行すると、同じファイルを指す他のファイル記述子に影響しますか?

4

3 に答える 3

4

Linux システムでは、これを行うために複数のファイル記述子は必要ありません。単一のファイル記述子を共有し、preadを使用して、ファイル記述子をまったく変更せずにアトミックにシーク/読み取り操作を実行できます。

于 2013-07-10T14:41:06.020 に答える
3

それで大丈夫です。同じファイルが必要なときはいつでも開くことができ、各ファイル記述子は互いに独立しています。

于 2010-04-18T21:05:32.850 に答える
0

各スレッドが独自のファイル ハンドルを持っている場合、これは正常に機能するはずです。の使用について言及しているため、各スレッドでfclose()も使用fopen()しており、各スレッドは独自のFILE *変数にのみ影響することを示唆しています。

問題はありますか?

于 2010-04-18T21:06:09.503 に答える