私はプロジェクトを進めています。ところで、ソースコードで閉じられていないファイル記述子が多いことがわかりました。一見するとこの姿が良く見えません。 Google を試してみると、誰かがこの fd の後にバッファがある場合は閉じないでください。そうでなければ悪いことが起こると言った。私はこれについてよくわかりません。だから誰でもアドバイスできますか?
ファイル記述子を使用した後は閉じる必要がありますか?ファイル記述子の使用に関する規則はありますか?
ベストアンサー1
はい、関連リソースを解放し、制限に達するのを防ぐために、不要になったらすぐにファイル記述子を閉じるのが最善です。
一部のファイル記述子は特定のAPIを介して開くことができ、それを閉じるときはシステムコールを使用する代わりに同じAPIを使用する必要がありますclose(2)
。
これらの一般的なAPIは、C言語のstdio(all fopen
、、、printf
... fputs
)です。たとえば、ファイルfopen(3)
(ファイル記述子ではなくデータ型を返しますが、その下にfdを生成する)ファイルを開く場合は、stdioでfdを閉じるのではなく(すべてのバッファをフラッシュする)FILE*
ifを閉じる必要があります。 。fclose(thatFILE)
close(fileno(thatFILE))