Bloccare i file in Windows
Domanda
Sto lavorando su alcuni codice legacy che apre un file e aggiunge i dati binari al file:
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);
Per qualche motivo il codice apre il file due volte. È questo perché _sopen viene utilizzato per bloccare il file in Windows?
Se è così, come mai std :: :: ifstream aperta non blocca il file?
C'è un modo per verificare se un handle di file di Windows è già stato chiuso?
Soluzione
Si apre due volte perché la prima si apre, e lo blocca. Poi fstream apre di nuovo (un po 'in contraddizione con l'intento della dichiarazione precedente.)
Su come bloccare solo il file, controllare questa domanda fuori .
Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow