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
[75032] Re: CreateProcess로 콘솔프로그램 실행시 Handle의 지속적인 증가?
빌더(TWx) [builder] 3242 읽음    2018-07-25 00:12
단단한돌 님이 쓰신 글 :
: 환경: C++ Builder XE2
:
: CreateProcess()함수를 이용해 콘솔 프로그램을 실행 시킵니다.
: 그런데,
: 실행 시킬 때마다 작업관리자에서 보면 핸들이 지속적으로 증가합니다.
: 156 => 158 => 160 => ...
: 왜 이런 증상이 발생하나요?
: 24시간 운영되는 S/W라 리소스 소모에 민감하네요.
:
: 고수님들~!
: 미리 감사합니다.
:
:
void __fastcall TForm1::Button1Click(TObject *Sender)
: {
:     bool flag;
:     STARTUPINFO si;
:     memset(&si, 0, sizeof(STARTUPINFO));
:     si.cb = sizeof(STARTUPINFO);
:     si.dwFlags = STARTF_USESTDHANDLES;
:     PROCESS_INFORMATION pi;
:     
:     UnicodeString Dir = GetCurrentDir();
:     UnicodeString File = "abcd.exe";
:     UnicodeString x = Dir + "\\" + File + " D:\\201807200120.adx";
:     AnsiString xx = x;
:     
:     flag = CreateProcess(NULL,x.c_str(), NULL, NULL, FALSE, 0, NULL, NULL, &si, &pi);
:     
:     if(!flag) {
:         ShowMessage("Fail to create process.");
:     } else {
:         ShowMessage("Executed..");
:     }
: }

:


답변:


OS 기초적인 부분인데...
프로세스를 생성했으니 당연히 프로세스 핸들이 열리게 되고...
모든 프로세스는 프로그램 실행을 위해 적어도 하나 이상의 쓰레드는 기본적으로 갖게 되잖아요.

아래와 같이 사용하지 않는 프로세스 핸들과 쓰레드 핸들을 닫아주면 됍니다.

    ...
    flag = CreateProcess(NULL,x.c_str(), NULL, NULL, FALSE, 0, NULL, NULL, &si, &pi);

    if(!flag) {
        OutputDebugStringA("Fail to create process.");
    } else {
        OutputDebugStringA("Executed..");
        // wait for process to terminate
        WaitForSingleObject( pi.hProcess, INFINITE );
        CloseHandle(pi.hProcess);
        CloseHandle(pi.hThread);
    }
    ...



+ -

관련 글 리스트
75031 [질문] CreateProcess로 콘솔프로그램 실행시 Handle의 지속적인 증가? 단단한돌 3132 2018/07/24
75032     Re: CreateProcess로 콘솔프로그램 실행시 Handle의 지속적인 증가? 빌더(TWx) 3242 2018/07/25
75033         Re:Re: CreateProcess로 콘솔프로그램 실행시 Handle의 지속적인 증가? 단단한돌 3024 2018/07/25
Google
Copyright © 1999-2015, borlandforum.com. All right reserved.