8wDlpd.png
8wDFp9.png
8wDEOx.png
8wDMfH.png
8wDKte.png

当应用程序崩溃时打开句柄会发生什么?(Windows XP 及以上版本)

JsonKody 2月前

16 0

我的印象是,如果一个应用程序有一个打开的句柄并且它崩溃了,那么该句柄不会被释放,如果你尝试访问该句柄(比如说一个文件),那么你会收到错误。

我的印象是,如果一个应用程序有一个打开的句柄并且它崩溃了,那么该句柄不会被释放,如果你尝试访问该句柄(比如说一个文件),那么你会收到错误。

但是,我在 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

那么,Windows XP 及更高版本是否会释放所有打开的句柄,以防具有这些句柄的 exe 崩溃?

帖子版权声明 1、本帖标题:当应用程序崩溃时打开句柄会发生什么?(Windows XP 及以上版本)
    本站网址:http://xjnalaquan.com/
2、本网站的资源部分来源于网络,如有侵权,请联系站长进行删除处理。
3、会员发帖仅代表会员个人观点,并不代表本站赞同其观点和对其真实性负责。
4、本站一律禁止以任何方式发布或转载任何违法的相关信息,访客发现请向站长举报
5、站长邮箱:yeweds@126.com 除非注明,本帖由JsonKody在本站《c#》版块原创发布, 转载请注明出处!
最新回复 (0)
  • 所有版本的 Windows 都会在应用程序崩溃时关闭内核句柄。甚至 Windows 95 也这么做了。当然,任何基于 Windows NT 内核或更高版本的系统都会在应用程序崩溃时关闭内核句柄。

    这包括文件、事件、信号量、共享内存、管道和套接字的句柄

  • +1。虽然你知道,Windows 95 之前就有 Windows 版本 :) 但在 16 位 Windows 中情况并非如此,但我想那已经是古老的历史了... 也许是 blogs.msdn.com/oldnewthing/archive/2004/03/01/82103.aspx

  • 所有现代操作系统都会在程序退出或崩溃时清理所有程序资源 - 内存、句柄、套接字、线程等。否则,应用程序开发人员在退出时忘记关闭的每个句柄都会造成大量资源泄漏,并且必须定期重新启动计算机......

返回
作者最近主题: