2010-12-04 7 views
0

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

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

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

+0

Под «процессом» вы на самом деле подразумеваете вызов метода или поток в рамках одной программы? – IanNorton 2010-12-04 07:18:31

+0

Нет вызова метода, его exe-файл, вызываемый процессом. – 2010-12-04 07:48:31

ответ

1

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

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

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

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

0

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

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

+0

Я создаю файл с некоторым содержимым, затем использую его, и после его использования я удаляю его. Затем снова по другому запросу я создаю еще один файл. Файл не может использоваться совместно, поэтому, если несколько пользователей используют его, мне нужно создать несколько файлов. – 2010-12-04 07:57:33