C++Builder Programming Forum
C++Builder  |  Delphi  |  FireMonkey  |  C/C++  |  Free Pascal  |  Firebird
볼랜드포럼 BorlandForum
 경고! 게시물 작성자의 사전 허락없는 메일주소 추출행위 절대 금지
C++빌더 포럼
Q & A
FAQ
팁&트릭
강좌/문서
자료실
컴포넌트/라이브러리
메신저 프로젝트
볼랜드포럼 홈
헤드라인 뉴스
IT 뉴스
공지사항
자유게시판
해피 브레이크
공동 프로젝트
구인/구직
회원 장터
건의사항
운영진 게시판
회원 메뉴
북마크
볼랜드포럼 광고 모집

C++빌더 Q&A
C++Builder Programming Q&A
[45323] Re:핸들이 엄청나게 증가해요.. 이 핸들들을 어떻게 해야 할까요ㅜㅜ
장성호 [nasilso] 1853 읽음    2006-06-16 08:57
코딩에 버그가 있네요
찾지 못하고 그냥 넘어간느 동안 open했던 process핸들을 Close하지 않네요
한줄만 추가합니다.
"//--> 수정한 부분...  " 을 보세요

....
bool __fastcall TFrom::FindProcess(PPROCESS_INFORMATIONREC _Process_Info)
{
     hsnapshot = NULL;
     hopenprocess = NULL;

     PROCESS_MEMORY_COUNTERS PMC;

     PROCESSENTRY32 processinfo;

     processinfo.dwSize = sizeof(processinfo);
     hsnapshot = CreateToolhelp32Snapshot(TH32CS_SNAPPROCESS, 0);
     if (hsnapshot == NULL)
     {
         CloseHandle(hopenprocess);
         CloseHandle(hsnapshot);
         return false;
     }
     bool status = Process32First(hsnapshot, &processinfo);
     while(status)
     {
         hopenprocess = OpenProcess(PROCESS_ALL_ACCESS, false, processinfo.th32ProcessID);
         DWORD  nMomoryInfo = GetLastError();

         if(strcmp(processinfo.szExeFile,_Process_Info->szExeName) == 0)
         {
             _Process_Info->PID = processinfo.th32ProcessID;
             _Process_Info->nThreadsCnt = processinfo.cntThreads;

             GetProcessMemoryInfo(hopenprocess, &PMC, sizeof(PROCESS_MEMORY_COUNTERS));
             _Process_Info->nMomoruInfo = (DWORD)(PMC.WorkingSetSize / 1024);

             CloseHandle(hopenprocess);
             CloseHandle(hsnapshot);
             return true;
         }
          else if(hopenprocess)CloseHandle(hopenprocess);   ////////////////////////--> 수정한 부분...

         status = Process32Next(hsnapshot, &processinfo);
     }
      CloseHandle(hopenprocess);
     CloseHandle(hsnapshot);
     return false;
: }





완전버그 님이 쓰신 글 :
: bool __fastcall TFrom::FindProcess(PPROCESS_INFORMATIONREC _Process_Info)
: {
:     hsnapshot = NULL;
:     hopenprocess = NULL;
:
:     PROCESS_MEMORY_COUNTERS PMC;
:
:     PROCESSENTRY32 processinfo;
:
:     processinfo.dwSize = sizeof(processinfo);
:     hsnapshot = CreateToolhelp32Snapshot(TH32CS_SNAPPROCESS, 0);
:     if (hsnapshot == NULL)
:     {
:         CloseHandle(hopenprocess);
:         CloseHandle(hsnapshot);
:         return false;
:     }
:     bool status = Process32First(hsnapshot, &processinfo);
:     while(status)
:     {
:         hopenprocess = OpenProcess(PROCESS_ALL_ACCESS, false, processinfo.th32ProcessID);
:         DWORD  nMomoryInfo = GetLastError();
:
:         if(strcmp(processinfo.szExeFile,_Process_Info->szExeName) == 0)
:         {
:             _Process_Info->PID = processinfo.th32ProcessID;
:             _Process_Info->nThreadsCnt = processinfo.cntThreads;
:
:             GetProcessMemoryInfo(hopenprocess, &PMC, sizeof(PROCESS_MEMORY_COUNTERS));
:             _Process_Info->nMomoruInfo = (DWORD)(PMC.WorkingSetSize / 1024);
:
:             CloseHandle(hopenprocess);
:             CloseHandle(hsnapshot);
:             return true;
:         }
:
:         status = Process32Next(hsnapshot, &processinfo);
:     }
:      CloseHandle(hopenprocess);
:     CloseHandle(hsnapshot);
:     return false;
: }
:
:
:
:
:
: 다음과 같은 소스로 프로세스 정보들을 가져와서 프로세스를 관리하는데
: 이 부분을 계속 돌리다 보면 핸들갯수가 무한정 증가합니다.
:
: 많이 보진 못했지만 몇억개에서 몇십억개 까지 증가하는 것 같은데..ㅜㅜ
:
: 이 핸들들을 어떻게 해야하나요?
: 고수님들 좀 부탁드려요..

+ -

관련 글 리스트
45322 핸들이 엄청나게 증가해요.. 이 핸들들을 어떻게 해야 할까요ㅜㅜ 완전버그 1322 2006/06/16
45323     Re:핸들이 엄청나게 증가해요.. 이 핸들들을 어떻게 해야 할까요ㅜㅜ 장성호 1853 2006/06/16
45329         Re:Re:감사합니다~ 완전버그 1208 2006/06/16
Google
Copyright © 1999-2015, borlandforum.com. All right reserved.