如果我有一个已停止(已终止或刚刚结束)的某个窗口进程的句柄:
如果1.为真:GetExitCodeProcess()的“长”程度如何? 如果2.为真:这是否意味着我可以通过启动/终止新进程来关闭操作系统,因为我创建了越来越多的句柄(并且操作系统为它们保留了内存)?
我对句柄的概念感到有点困惑。
提前谢谢!
答案 0 :(得分:7)
句柄间接指向内核对象。只要有打开的手柄,物体就会保持活着。
是否可以将句柄(或更好的内存)重新用于另一个进程?
句柄的数值(或者它实现了)可能会被重用,但这并不意味着它总是指向同一个东西。就像进程ID一样。
或者GetExitCodeProcess()例如从现在开始永远得到正确的结果吗?
没有。当关闭进程的所有句柄时,将释放进程对象(及其退出代码)。请注意,运行进程持有自身的隐式句柄。但是,只要你需要,你就可以握住一个打开的手柄。
如果2.为真:这是否意味着我可以通过启动/终止新进程来关闭操作系统,因为我创建了越来越多的句柄(并且操作系统为它们保留了内存)?
有很多方法可以使系统挨饿。它要么开始大量交换,要么在某个时候无法产生新进程。
答案 1 :(得分:1)
简短回答:
GetExitCodeProcess
一直有效,直到您调用CloseHandle
之后,过程对象将被释放并可以重复使用。
答案很长: 请参阅Cat Plus Plus的答案。