我是否需要在_spawnv()
的句柄上调用closeHandle()
_spawnv()
?
另外,当我调用_spawnv()
时,是否增加了新进程句柄的引用次数?
而且,如果它增加了,那么不会进入像“僵尸”状态的Linux一旦终止?
如果你不需要把手,你应该关闭它。 然而,不这样做的后果是轻微的,除非你产生了很多过程。 内核将不得不保留进程对象(我认为这大致类似于UNIX中的僵尸进程),但对进程对象的数量没有固定的限制,并且终止的进程只需要内核中的少量内存。 一旦你的进程退出,泄漏的资源将被自动清理。
至于手柄的引用计数, 没有这个东西。 手柄没有引用计数。
在异步模式下调用_spawnv时,会返回进程句柄。 我假设句柄总是有效的,因为你可以试图通过_cwait(如果它不是一个伪句柄来标识调用进程或线程,则关闭给定的句柄)等待产生的进程。
当进程终止时,其内核对象将一直存在,直到所有的句柄和指针被移除。 在这种状态下,进程实际上没有地址空间,并且正在运行的进程列表中没有列出AFAIK(不能在任务管理器中看到它)。