Как освободить все ресурсы для процесса? - PullRequest
0 голосов
/ 04 декабря 2010

Я запускаю процесс, который создает файл и использует этот файл. После завершения этого процесса я удаляю этот файл.

Если между ними возникает какое-то исключение, как узнать, что файл выпущен процессом или нет, и как удалить его, если он заблокирован процессом.

Спасибо за любую помощь:)

Ответы [ 2 ]

1 голос
/ 04 декабря 2010

В Windows, когда процесс завершается, ОС автоматически возвращает все ресурсы, принадлежащие этому процессу.Конец истории.

Например, скажем, вы сделали «CreateFileMapping ()» для каждого из двух процессов, чтобы разделить сегмент памяти.Когда первый процесс завершается, Windows уменьшает счетчик использования, и только выживший процесс все еще может использовать объект.Когда второй процесс выполняет «CloseHandle ()» (или сам выходит), счетчик уменьшается до нуля, и объект полностью освобождается.

Другими словами, Windows вернет ресурс, когда он больше не будетиспользуется, независимо от того, будут ли процессы очищаться постепенно или нет.

И нет, даже если вы откроете файл для монопольного доступа, сам файл не будет «заблокирован» после закрытия дескриптора файлаWindows закроет его автоматически после завершения программы).

0 голосов
/ 04 декабря 2010

Когда ваша программа завершает работу - независимо от того, каким образом - файл, если он все еще существует, больше не будет заблокирован процессом ... потому что процесс не существует.

Но я долженудивляться;если файл просто удаляется в любом случае в конце, вам действительно нужно создать файл в первую очередь?

...