Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/windows/17.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Windows 是否应该关闭从_spawnv返回的句柄?_Windows_Winapi_Process - Fatal编程技术网

Windows 是否应该关闭从_spawnv返回的句柄?

Windows 是否应该关闭从_spawnv返回的句柄?,windows,winapi,process,Windows,Winapi,Process,是否需要从\u spawnv()调用句柄上的closeHandle() 另外,当我调用\u spawnv()时,新进程句柄的refcount是否会增加 而且,如果它是递增的,那么一旦进程终止,它不会进入类似linux的“僵尸”状态吗?在异步模式下调用_spawnv时,会返回进程句柄。我假设句柄总是有效的,因为您可以尝试通过_cwait等待生成的进程(如果给定句柄不是标识调用进程或线程的伪句柄,则关闭该句柄) 当进程终止时,其内核对象将一直存在,直到删除对它的所有句柄和指针引用为止。在这种状态下,

是否需要从
\u spawnv()
调用句柄上的
closeHandle()

另外,当我调用
\u spawnv()
时,新进程句柄的refcount是否会增加


而且,如果它是递增的,那么一旦进程终止,它不会进入类似linux的“僵尸”状态吗?

在异步模式下调用_spawnv时,会返回进程句柄。我假设句柄总是有效的,因为您可以尝试通过_cwait等待生成的进程(如果给定句柄不是标识调用进程或线程的伪句柄,则关闭该句柄)


当进程终止时,其内核对象将一直存在,直到删除对它的所有句柄和指针引用为止。在这种状态下,进程实际上没有地址空间,并且可能没有列在正在运行的进程列表中(您在任务管理器中看不到它)。

如果您不需要句柄,则应将其关闭。但是,如果不这样做,后果很轻微,除非您正在生成大量进程。内核必须保留进程对象(我认为这大致类似于UNIX中的僵尸进程),但进程对象的数量没有固定限制,终止的进程只需要内核中的少量内存。一旦进程退出,泄漏的资源将自动清理

对于句柄的引用计数,句柄不进行引用计数