
Originariamente inviata da
shodan
Dipende. Gli stream C++ o la fopen() del C non gestiscono la condivisione granulare del file, ossia ciò che viene creato è sempre condiviso in lettura/scrittura. Pertanto se quel "test.txt" è stato creato con roba standard, non c'è modo di testare se tale filè già aperto da qualcun altro. fs.open() e fs.is_open() fanno riferimento solo allo stream corrente. E cosa importante, non c'è modo di recuperare il descrittore del file.
Se vuoi avere un po' di granularità devi scendere di un livello e usare le funzioni di basso livello del C. Per Windows le puoi trovare qui:
https://msdn.microsoft.com/en-us/library/40bbyw78.aspx
i nomi credo non si discostino dallo standard POSIX. Occhio però che i flag sono diversi da quelli standard.
In alternativa puoi usare direttamente le API, a partire da CreateFile().