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
[45329] Re:Re:감사합니다~
완전버그 [] 1208 읽음    2006-06-16 17:15
감사합니다~^^
분명 어딘가 새는 곳이 있는것 같았는데..
그렇게 찾아봐도 안 보이더니 거기 있는줄도 모르고..^^;

그럼 다른 버그들을 찾아서..~~^^


장성호 님이 쓰신 글 :
: 코딩에 버그가 있네요
: 찾지 못하고 그냥 넘어간느 동안 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:핸들이 엄청나게 증가해요.. 이 핸들들을 어떻게 해야 할까요ㅜㅜ 장성호 1854 2006/06/16
45329         Re:Re:감사합니다~ 완전버그 1208 2006/06/16
Google
Copyright © 1999-2015, borlandforum.com. All right reserved.