windows – 创建新进程后是否需要使用CloseHandle?
我需要从上下文菜单中启动一个单独的进程/应用程序;我正在使用函数launch_program这样做.一旦它终止,我不关心创建过程的退出代码,我只是想能够启动它.我的问题是:如果变量startup_info和proc_info是通过引用CreateProcess传递的,我可以在它们上面使用CloseHandle,如果我只是要从函数返回到我的主线程吗?
void launch_program() { STARTUPINFO startup_info; PROCESS_INFORMATION proc_info; LPCSTR location = "C:Program Files (x86)Internet Exploreriexplore.exe"; ZeroMemory( &startup_info,sizeof(startup_info)); startup_info.cb = sizeof(startup_info); ZeroMemory( &proc_info,sizeof(proc_info)); CreateProcess( location,NULL,FALSE,&startup_info,&proc_info); } 我用https://msdn.microsoft.com/en-us/library/windows/desktop/ms682512(v=vs.85).aspx作为参考. PS我只是使用Internet Explorer作为填充程序 CloseHandle(proc_info.hProcess); CloseHandle(proc_info.hThread);
是的,当你不再需要它们时,你可以而且应该关闭这些手柄,包括如果你永远不需要它们的话.
从您链接的页面Creating Processes:
[编辑]为了强调*应该*关闭部分,这可能在文档中没有足够强烈地说明,这里引用@ RaymondChen的博客: Why do some process stay in Task Manager after they’ve been killed?
(编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |