请问有没有方法解释某个进程及其创建的子进程啊?

hw110 2007-10-29 10:03:27
TerminateProcess只能结束一个进程,我想把被结束的进程及其创建的子进程一起结束,不知道有没有什么方法?前提是不知道待结束的进程的子进程的相关信息。
万分感谢!
...全文
44 3 打赏 收藏 转发到动态 举报
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
WingForce 2007-10-29
  • 打赏
  • 举报
回复
大概是这个样子吧:


void MySupperTerminateProcesses(HANDLE hProc)
{

HANDLE hSnapshot, hChildProc;
PROCESSENTRY32 pe;
DWORD dwPID;
__try
{
hSnapshot = CreateToolhelp32Snapshot(TH32CS_SNAPPROCESS,0);
dwPID = GetProcessId(hProc);

pe.dwSize = sizeof(PROCESSENTRY32);
Process32First(hSnapshot, &pe);

if(pe.th32ParentProcessID == dwPID)
{
hChildProc = OpenProcess(PROCESS_ALL_ACCESS, FALSE, pe.th32ProcessID);
TerminateProcess(hChildProc, 0);
CloseHandle(hChildProc);
}

pe.dwSize=sizeof(PROCESSENTRY32);
while(Process32Next(hSnapshot,&pe))
{
hChildProc = OpenProcess(PROCESS_ALL_ACCESS, FALSE, pe.th32ProcessID);
TerminateProcess(hChildProc, 0);
CloseHandle(hChildProc);
pe.dwSize=sizeof(PROCESSENTRY32);
}

}
__excepton(1)
{
printf("Error:%d\n", GetLastError());
}
if( hChildProc != INVALIDE_HANDLE_VALUE )
CloseHandle(hChildProc);

if( hSnapshot != INVALIDE_HANDLE_VALUE )
CloseHandle(hSnapshot);

return;
}
hw110 2007-10-29
  • 打赏
  • 举报
回复
但是怎么识别是我要结束的这个进程所创建的呢?进一步说,如果子进程也创建了子子进程,如何将其全部杀掉?
WingForce 2007-10-29
  • 打赏
  • 举报
回复
我只能想到遍历系统句柄表的办法

15,471

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC 进程/线程/DLL
社区管理员
  • 进程/线程/DLL社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧