创建进程并立即终止进程后,是否需要CloseHandle
PROCESS_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
(将不可用(直到进程终止,所有句柄都将关闭(。是否运行进程、线程-在这里不扮演任何角色。对象不会被销毁,直到存在对它的引用(句柄(