我的印象是,如果一个应用程序有一个打开的句柄并且它崩溃了,句柄不会被释放,如果您尝试访问该句柄(比方说一个文件),那么您将收到错误。
但是,我已经在 Windows XP 及更高版本中尝试过此操作,如果我从任务管理器中关闭 exe,则句柄似乎会在它关闭句柄之前释放。以下是代码:
Private Sub Form_Load()
Dim iFile As Integer
iFile = FreeFile
Open "myfilelock" For Output Lock Read Write As #iFile
MsgBox "About to close" 'close it here with task manager
Close #iFile
End Sub
那么,如果具有这些句柄的 exe 崩溃,Windows XP 是否会释放所有打开的句柄?
最佳答案
当应用程序崩溃时,所有版本的 Windows 都会关闭内核句柄。甚至 Windows 95 也这样做了。当然,任何基于 Windows NT 内核或更高版本的内核都会在应用程序崩溃时关闭内核句柄。
这包括文件、事件、信号量、共享内存、管道和套接字的句柄
关于windows - 当应用程序崩溃时打开句柄会发生什么? (从 Windows XP 开始),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2332928/