在创建进程并立即终止它之后, 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?
2 回答
handle(进程句柄表中的索引)这是指向对象的间接指针(在具体情况下为
ETHREAD
) . 如果不是关闭句柄 - 对象(ETHREAD
)将不是空闲的(直到您的进程终止,并且所有句柄将被关闭) . 是运行进程,线程与否 - 在这里不起任何作用 . 对象将不会被销毁,直到它存在引用(句柄)如docs for CreateProcess()所述:
并在docs for PROCESS_INFORMATION: