QIODevice
のうちの1つがにopen()
のメソッドを再実装したものがQFileDevice::FileHandleFlag
引数を持っています。それに関するドキュメントを見て、矛盾する記述を持つ2つのオプションがあります。 QFileDevice
documentationからQtは自動的にファイルを閉じますか?
:
QFileDevice::AutoCloseHandle
- (オープンに渡されたファイルハンドル)が(近いことで閉じられなければならない)、デフォルトの動作では、近くには、単にファイルをフラッシュし、アプリケーションがあるということですファイルハンドルを閉じる責任があります。名前でファイルを開くときは、Qtは常にファイルハンドルを所有しているため、このフラグは無視されます。
QFileDevice::DontCloseHandle
- 明示的に閉じていない場合、QFileオブジェクトが破棄されると、元のファイルハンドルが開いたままになります。
だから、実際には何も変更するQtの自動クローズファイルはないかと、このオプションを設定するのですか?
DontCloseHandleは、アプリケーションが以前に開いた*ハンドルとQtピギーバックを提供するときのものです。この場合、アプリケーション(Qtではなく)は生涯の所有権を保持したいかもしれません。これを "と比較する*名前でファイルを開くとき*、このフラグは無視されます。* Qtは常にファイルハンドル*を所有しており、閉じなければなりません。 – user2864740