ファイルを開いてバイナリデータをファイルに追加するレガシーコードに取り組んでいます。
std::ifstream mInFile;
#ifdef WINDOWS
miWindowsFileHandle = _sopen(filename.c_str(), O_RDONLY , SH_DENYWR, S_IREAD);
#endif
mInFile.open(filename.c_str(), std::ios_base::binary);
何らかの理由で、コードはファイルを 2 回開きます。これは、Windows でファイルをロックするために _sopen が使用されているためですか?
もしそうなら、どうして std::ifstream::open がファイルをロックしないのでしょうか?
Windows ファイル ハンドルが既に閉じられているかどうかを確認する方法はありますか?