Come liberare tutte le risorse per un processo?
-
08-10-2019 - |
Domanda
Sono in esecuzione di un processo, che sta creando un file e l'utilizzo di tale file. Dopo la fine di questo processo, che sto eliminando il file.
Se qualche eccezione si pone in mezzo poi come sapere che il file viene rilasciato dal processo o no e come eliminarlo se è bloccato dal processo.
Grazie per qualsiasi aiuto:)
Soluzione
In Windows, quando le estremità di processo, il sistema operativo restituisce tutte le risorse di proprietà di quel processo automaticamente. Fine della storia.
Per esempio, diciamo che hai fatto "CreateFileMapping ()" a ciascuno dei due processi per condividere un segmento di memoria. Quando i primi uscite di processo, Windows decrementa il contatore di utilizzo, e solo il processo superstite può ancora utilizzare l'oggetto. Quando il secondo processo fa un "CloseHandle ()" (o si esce), il contatore viene decrementato a zero, e l'oggetto è completamente liberato.
In altre parole, Windows recuperare la risorsa quando non è più utilizzato, se i processi di pulire con grazia a se stessi o meno.
E no, anche se si apre un file per l'accesso esclusivo, il file stesso non verrà "bloccato" una volta che l'handle di file è chiuso (e Windows si chiuderà automaticamente quando il programma termina).
Altri suggerimenti
Quando il programma termina - non importa con quali mezzi -. Il file, se esiste ancora, non saranno più bloccati dal processo ... perché il processo non esiste
Ma devo meraviglia; se il file è solo di essere eliminato in ogni caso, alla fine, non si ha realmente bisogno di creare un file , in primo luogo?