句柄无法释放
这个代码每次循环都会创建一个进程,我在进程创建后都CloseHandle,但是任务管理器依然是在每次循环都增加一个句柄数
比如说第一次循环时,显示当前进程有28个句柄,第二次循环时,显示当前进程有29个句柄,第三次循环时,显示当前进程有30个句柄,一直升,可是我CloseHandle了啊,难道还有什么句柄没有被Close掉?
#include <stdio.h>
#include <windows.h>
int main(void)
{
BOOL StartUpStatus;
STARTUPINFO StartUpInfo;
PROCESS_INFORMATION ProcessInfo;
int ExitCode = -1;
while(1)
{
memset(&StartUpInfo, 0, sizeof(StartUpInfo));
StartUpInfo.cb = sizeof(StartUpInfo);
StartUpInfo.lpReserved = NULL;
StartUpInfo.lpDesktop = NULL;
StartUpInfo.lpTitle = NULL;
StartUpInfo.dwFlags = STARTF_USESHOWWINDOW;
StartUpInfo.wShowWindow = SW_HIDE;
StartUpInfo.cbReserved2 = 0;
StartUpInfo.lpReserved2 = NULL;
memset(&ProcessInfo, 0, sizeof(ProcessInfo));
StartUpStatus = CreateProcess(NULL, "cmd /c exit", NULL, NULL, FALSE, CREATE_NO_WINDOW, NULL, NULL, &StartUpInfo, &ProcessInfo);
if( StartUpStatus == FALSE )
{
return 1;
}
WaitForSingleObject(ProcessInfo.hProcess, INFINITE);
GetExitCodeProcess(ProcessInfo.hProcess, (PDWORD)&ExitCode);
CloseHandle(ProcessInfo.hThread);
printf("%d\n", (int)GetLastError());
CloseHandle(ProcessInfo.hProcess);
printf("%d\n", (int)GetLastError());
Sleep(2000);
}
return 0;
}
比如说第一次循环时,显示当前进程有28个句柄,第二次循环时,显示当前进程有29个句柄,第三次循环时,显示当前进程有30个句柄,一直升,可是我CloseHandle了啊,难道还有什么句柄没有被Close掉?
...全文
相关推荐
句柄操作模块
句柄操作模块 很强大,本人吐血推荐!
C#解决“创建窗口句柄时出错”异常
解决“创建窗口句柄时出错”异常,具体问题分析在“说明.txt”文件中
[精]What is 句柄
[精]What is 句柄--句柄详解 初学者MFC必知必会的概念
获得.net控件的windows句柄的方法
有一个简单的获得控件的句柄的窍门。你将窗体设置为鼠标可捕获,那么你的窗口句柄可以通过使用Windows API捕获。 这个想法在以下的GetHWnd函数中实现:
句柄和指针的区别
当把硬盘上的资源调入内存以后,将有一个句柄指向它,但是句柄只能指向一个资源。而且句柄知道所指的内存有多大。还有指针,指针指向地址,它不知道分配的内存有多大


进程/线程/DLL
