进程终止后,我是否需要关闭线程句柄



创建进程并立即终止进程后,是否需要CloseHandlePROCESS_INFORMATION结构中返回的线程句柄?

STARTUPINFO si;
GetStartupInfo(&si);
PROCESS_INFORMATION pi;
CreateProcess(0, cmdLine, 0, 0, FALSE, CREATE_SUSPENDED, 0, 0, &si, &pi);
TerminateProcess(pi.hProcess, 0);
CloseHandle(pi.hProcess);
CloseHandle(pi.hThread);  // Is this necessary?

CreateProcess():文档中所述

PROCESS_INFORMATION中的句柄在不再需要时必须使用CloseHandle关闭。

PROCESS_INFORMATION:的文档中

包含有关新创建的进程及其主线程的信息。它与CreateProcess、CreateProcessAsUser、CreateProcessWithLogonW或CreateProcessWithTokenW函数一起使用。

[…]

如果函数成功,请确保在完成hProcess和hThread句柄后调用CloseHandle函数来关闭它们。

句柄(进程句柄表中的索引(这是指向对象的间接指针(在具体情况下为ETHREAD(。如果不关闭句柄-对象(ETHREAD(将不可用(直到进程终止,所有句柄都将关闭(。是否运行进程、线程-在这里不扮演任何角色。对象不会被销毁,直到存在对它的引用(句柄(

最新更新