Я работаю над устаревшим кодом, который открывает файл и добавляет в него двоичные данные:
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);
По какой-то причине код открывает файл дважды. Это потому, что _sopen используется для блокировки файла в Windows?
Если это так, почему std :: ifstream :: open не блокирует файл?
Есть ли способ проверить, был ли дескриптор файла Windows уже закрыт?