首页
社区
课程
招聘
[求助]如何结束进程
发表于: 2013-1-31 11:40 5644

[求助]如何结束进程

2013-1-31 11:40
5644
我使用CreateProcess创建了一个cmd进程,然后想在程序里把它杀掉,
使用TerminateProcess来终止它,函数返回了,
但是从进程列表里看,cmd进程还在,
请问怎样才能结束它?
谢谢

[培训]内核驱动高级班,冲击BAT一流互联网大厂工作,每周日13:00-18:00直播授课

收藏
免费 0
支持
分享
最新回复 (13)
雪    币: 3836
活跃值: (4142)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
2
不会吧。。。。。。。。
2013-1-31 11:49
0
雪    币: 351
活跃值: (22)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
3
调试运行的?还是权限问题?
2013-1-31 11:50
0
雪    币: 35
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
jpy
4
就是不知道什么问题啊。
我先创建了两个匿名管道,分别跟cmd的输入和输出关联,
然后就CreateProcess了cmd进程,
然后想杀掉它,发现在任务管理器的进程列表里还有这个cmd。
是不是匿名管道的问题啊?

2013-1-31 11:59
0
雪    币: 351
活跃值: (22)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
5
创建了2个 杀掉1个?
2013-1-31 14:09
0
雪    币: 35
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
jpy
6
我先创建了一个cmd进程,代码如下:
SECURITY_ATTRIBUTES sa;
HANDLE hRead,hWrite;
sa.nLength = sizeof(SECURITY_ATTRIBUTES);
sa.lpSecurityDescriptor = NULL;
sa.bInheritHandle = TRUE;
if (!CreatePipe(&hRead,&hWrite,&sa,0))
{
 ShowMessage("Error On CreatePipe()");
 return;
}
STARTUPINFO si;
PROCESS_INFORMATION pi;
si.cb = sizeof(STARTUPINFO);
GetStartupInfo(&si);
si.hStdError = hWrite;
si.hStdOutput = hWrite;
si.wShowWindow = SW_HIDE;
si.dwFlags = STARTF_USESHOWWINDOW | STARTF_USESTDHANDLES;
if (!CreateProcess(NULL,"cmd.exe" ,NULL,NULL,TRUE,NULL,NULL,NULL,&si,&pi))
{
  printf("createProcess fail!\n");
   return -1;
}


然后在另一个地方杀掉它:
TerminateProcess(pi.hProcess,0);
WaitForSingleObject(pi.hProcess, INFINITE);
printf("kill OK\n");

执行时,打印了kill OK ,但是cmd.exe还在任务管理器的进程列表里。
请问这是怎么回事?

2013-1-31 16:37
0
雪    币: 246
活跃值: (26)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
7
CloseHandle(pi.hProces);
CloseHandle(pi.hThread);
2013-1-31 16:50
0
雪    币: 35
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
jpy
8
这个我也试了,不行。。。

2013-1-31 17:12
0
雪    币: 3836
活跃值: (4142)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
9
有可能是挂在了设备驱动上了!
2013-2-1 02:38
0
雪    币: 35
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
jpy
10
刚简化了程序,发现的确是创建了2个,杀掉了1个。
但是我只运行了一次CreateProcess啊,怎么会创建了2个呢?
谢谢。

2013-2-1 10:48
0
雪    币: 220
活跃值: (117)
能力值: ( LV4,RANK:50 )
在线值:
发帖
回帖
粉丝
11
自身不是用cmd起来的?
你直接运行试试.别用IDE运行
2013-2-1 11:18
0
雪    币: 35
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
jpy
12
我在cmd下运行的,没用IDE运行,此时任务管理器进程列表是1个cmd
执行完CreateProcess后,发现任务管理器进程列表是3个cmd
然后执行TerminateProcess后,发现还剩2个cmd进程

2013-2-1 11:32
0
雪    币: 220
活跃值: (117)
能力值: ( LV4,RANK:50 )
在线值:
发帖
回帖
粉丝
13
编译出来 OD加载 断点createprocess
2013-2-2 09:56
0
雪    币: 35
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
jpy
14
已经通过查找进程pid将它杀掉了。
谢谢白玉箫和大家的提示。
2013-2-2 14:35
0
游客
登录 | 注册 方可回帖
返回
//