当应用程序崩溃时,打开句柄会发生什么情况?(Windows XP及以上版本)
我的印象是,如果一个应用程序有一个打开的句柄,它崩溃了,这个句柄没有被释放,如果你试图访问这个句柄,比如说一个文件,那么你会得到一个错误 但是,我在Windows XP以后的版本中尝试过此操作,如果在任务管理器关闭句柄之前从任务管理器关闭exe,则句柄似乎会被释放。代码如下:当应用程序崩溃时,打开句柄会发生什么情况?(Windows XP及以上版本),windows,vb6,handle,Windows,Vb6,Handle,我的印象是,如果一个应用程序有一个打开的句柄,它崩溃了,这个句柄没有被释放,如果你试图访问这个句柄,比如说一个文件,那么你会得到一个错误 但是,我在Windows XP以后的版本中尝试过此操作,如果在任务管理器关闭句柄之前从任务管理器关闭exe,则句柄似乎会被释放。代码如下: Private Sub Form_Load() Dim iFile As Integer iFile = FreeFile Open "myfilelock" For Outpu
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
那么,Windows XP以后的版本是否会释放所有打开的句柄,以防具有这些句柄的exe崩溃?当应用程序崩溃时,所有版本的Windows都会关闭内核句柄。甚至Windows95也做到了这一点。当然,任何基于Windows NT内核或更高版本的东西都会在应用程序崩溃时关闭内核句柄
这包括文件、事件、信号量、共享内存、管道和套接字的句柄当程序退出或崩溃时,所有现代操作系统都会清理所有程序资源—内存、句柄、套接字、线程等。否则,应用程序开发人员在退出时忘记关闭的每个句柄都会导致大量资源泄漏,必须定期重新启动你的电脑 +1。虽然,在Windows95之前有很多版本的Windows,你知道:这在16位Windows中是不正确的,但我想这已经是古老的历史了。。。也许我发现我必须定期重新启动Windows: