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?

È stato utile?

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
scroll top