|
本帖最后由 dd20121221 于 2012-8-1 01:50 编辑
最近需要一个能够关闭进程树的函数,于是发现了P版的_TerminateProcessTree,使用一段时间以后,发现一个问题,这个函数会偶尔关闭其他的进程,进过无数次的测试,最后发现一个问题,一个很大的问题,其实并不只是_TerminateProcessTree这个函数会出错。连系统自带的命令taskkill /T 也会出错,因为出错的原因在于子进程获取错误!
比如说进程里面存在PID : 1, 2, 3, 4, 5,这个5个进程,其中2,3进程是1进程的子进程,但是在使用任何一个获取子进程的函数的时候(P版的和_WinAPI_EnumChildProcess), 偶尔就会出现获取错误,比如说把4或者5进程认成了1的子进程。
如果不相信的朋友可以测试一下这个示例:
_arraydisplay(_WinAPI_EnumChildProcess(@AutoItPID))
就这一行保存编译成.exe程序,然后你不停地点,不停地点,在偶尔一下就会撞上出错的情况,这个是我大概点了20多下出现的截图,这个是我的实时进程列表截图
可以清楚地看到,conime.exe绝对不是1.exe的子进程,1.exe是永远也不会有子进程的。
自己想了很多办法都没有想到一个能够彻底杜绝得到子进程错误的办法。希望有其他朋友能够帮帮忙,找到一个彻底杜绝获取子进程错误的办法。 |
本帖子中包含更多资源
您需要 登录 才可以下载或查看,没有账号?加入
×
|