一旦流程结束,流程句柄会发生什么?

beu*_*chs 2 windows winapi process handle

如果我有一个窗口进程已停止(已终止或刚刚结束):

  1. 句柄(或更好的后面的内存)是否会被重新用于另一个进程?
  2. 或者GetExitCodeProcess()例如从现在开始永远得到正确的结果?

如果1.为真:GetExitCodeProcess()的"长"程度如何?
如果2.为真:这是否意味着我可以通过启动/终止新进程来关闭操作系统,因为我创建了越来越多的句柄(并且操作系统为它们保留内存)?

我对句柄的概念有点困惑.

先感谢您!

Cat*_*lus 7

句柄间接指向内核对象.只要有打开的句柄,对象就会保持活着.

句柄(或更好的后面的内存)是否会被重新用于另一个进程?

句柄的数值(或者它实现了)可能会被重用,但这并不意味着它总是指向同一个东西.就像进程ID一样.

或者GetExitCodeProcess()例如从现在开始永远得到正确的结果?

否.当进程的所有句柄都关闭时,将释放进程对象(及其退出代码).请注意,运行进程持有自身的隐式句柄.但是,只要您需要,您就可以握住打开的手柄.

如果2.为真:这是否意味着我可以通过启动/终止新进程来关闭操作系统,因为我创建了越来越多的句柄(并且操作系统为它们保留内存)?

有很多方法可以使系统挨饿.它要么开始大量交换,要么在某些时候无法产生新进程.