有一个程序,需要反复的执行一系列命令如dir C:\
这些命令分别在单独的进程中同时执行,
执行结束后自动退出,进程关闭
如果超过一定的时间没有结束,程序需要将其强制关闭
建立新进程用的是CreateProcess
强制关闭进程用的是TerminateProcess
现在的程序在反复运行很多个命令(30000左右)后,会出现堆溢出的错误,
一直没找到合适的解决办法
我的进程中new 的变量都已经delete掉了,查了一下资料,TerminateProcess只是强制关闭进程
并不释放资源
请问各位,如果强制关闭进程并释放资源
或者提供其他的解决办法,谢谢。
这些命令分别在单独的进程中同时执行,
执行结束后自动退出,进程关闭
如果超过一定的时间没有结束,程序需要将其强制关闭
建立新进程用的是CreateProcess
强制关闭进程用的是TerminateProcess
现在的程序在反复运行很多个命令(30000左右)后,会出现堆溢出的错误,
一直没找到合适的解决办法
我的进程中new 的变量都已经delete掉了,查了一下资料,TerminateProcess只是强制关闭进程
并不释放资源
请问各位,如果强制关闭进程并释放资源
或者提供其他的解决办法,谢谢。
PostMessage(hWnd,WM_CLOSE,0,0);
句柄的吧
可我的进程都是后台运行的,根本没有窗口啊。。
WaitForSingleObject(hProcess, INFINITE);
如果想使用超时机制,可以
WaitForSingleObject(hProcess, 3000); // 仅仅等待3秒,可以自己改
如果发现超时才使用TerminateProcess,超时时间应该设置成足够长,尽量避免强制结束进程
释放资源,在执行少量的任务时,没什么差别,但在反复执行创建进程操作时
就会出问题,因为有一些进程被强制关闭而资源没有释放,导致堆溢出
我想要的是一种可以强制关闭进程但同时可以安全释放资源的方法
ExitProcess好像也不会释放资源To jameshooo:
我试试你的方法吧,谢谢~~
只要避开terminate强制关闭就行了吧
而我要的是杀掉别的进程