FIX: Visual C++ .NET 2003 CRT _popen 함수를 호출할 때 응용 프로그램 핸들 누수

기술 자료 번역 기술 자료 번역
기술 자료: 892086 - 이 문서가 적용되는 제품 보기.
모두 확대 | 모두 축소

현상

C 런타임 (CRT) _popen 함수 Microsoft Visual C++ .NET 2003, 응용 프로그램 누수 핸들을 사용하여 함수를 호출할 때마다 사용하는 경우

원인

성능 향상을 위해 Visual C++ .NET 2003 CRT _popen 함수의 구현이 변경되었습니다. 이제 CRT _popen 함수에 CRT _spawnl 함수를 대신 WinAPI CreateProcess 함수를 사용합니다. 핸들 누수가 Visual C++ .NET 2003의 버그로 인해 발생합니다. 열린 상태로 PROCESS_INFORMATION 구조의 hThread 핸들을 필드를 이 버그로 인해.

해결 방법

지원되는 핫픽스를 이제 Microsoft에서 사용할 수 있지만 이 문서에서 설명하는 문제를 해결하기 위한 것일 뿐입니다. 이러한 특정 문제가 발생하는 시스템에만 적용해야. 이 핫픽스는 나중에 추가 테스트를 받아야 할 수도 있습니다. 따라서 이 문제의 영향이 심각하지 않으면 이 핫픽스가 포함된 다음 Visual Studio .NET 2003 서비스 팩이 나올 때까지 기다리는 것이 좋습니다.

이 문제를 즉시 해결하려면 핫픽스를 구하려면 Microsoft 기술 지원 서비스에 문의하십시오. Microsoft 고객기술지원부 전화 번호 및 지원 비용에 대한 정보를 전체 목록은 다음 Microsoft 웹 사이트를 방문하십시오.
http://support.microsoft.com/contactus/?ws=support
참고 Microsoft 기술 지원 전문가가 특정 업데이트로 문제를 해결할 수 있다고 판단하는 경우, 일반적으로 지원 호출에 발생하는 비용이 취소될 수 있습니다. 추가 지원 질문과 문제에는 특정 업데이트가 필요하지 않은 지원 비용이 적용됩니다.

전제 조건

전제 필요합니다.

재시작 요구 사항

이 핫픽스를 적용한 후에는 컴퓨터를 다시 시작할 필요가 없습니다.

핫픽스 대체 정보

이 핫픽스는 다른 핫픽스를 대체하지 않습니다.

파일 정보

이 핫픽스의 영어 버전은 다음 표에 나열된 파일 특성(또는 그 이후의 파일 특성)이 있습니다. 이러한 파일의 시간과 날짜는 UTC (협정 세계시) 로 나열됩니다. 파일 정보에서는 현지 시간으로 변환됩니다. UTC와 로컬 시간의 차이를 알려면 제어판의 날짜 및 시간 도구에서 표준 시간대 탭을 사용하십시오.
   Date         Time   Version            Size    File name
   --------------------------------------------------------------
   03-Feb-2005  02:57                     13,858  A_map.c
   03-Feb-2005  03:27                    363,744  Eh.lib
   03-Feb-2005  02:57                     10,456  Io.h
   06-Feb-2004  19:29                      4,246  Ios.cpp
   03-Feb-2005  03:30                  2,707,628  Libc.lib
   03-Feb-2005  03:34                  3,023,492  Libcd.lib
   03-Feb-2005  03:31                  2,937,528  Libcmt.lib
   03-Feb-2005  03:36                  3,304,810  Libcmtd.lib
   03-Feb-2005  03:30                  3,601,372  Libcp.lib
   03-Feb-2005  03:35                  4,433,774  Libcpd.lib
   03-Feb-2005  03:32                  3,651,664  Libcpmt.lib
   03-Feb-2005  03:36                  4,449,888  Libcpmtd.lib
   03-Feb-2005  04:11  7.10.4353.0       499,712  Msvcp71.dll      
   03-Feb-2005  03:37  7.10.4353.0       765,952  Msvcp71d.dll     
   03-Feb-2005  04:11  7.10.4353.0       348,160  Msvcr71.dll      
   03-Feb-2005  03:37  7.10.4353.0       544,768  Msvcr71d.dll     
   03-Feb-2005  02:58                     17,400  Popen.c
   03-Feb-2005  02:57                      9,948  Read.c
   03-Feb-2005  16:00                    202,240  Vc_user_crt71_rtl_x86_---.msm
   03-Feb-2005  16:00                    151,040  Vc_user_stl71_rtl_x86_---.msm

현재 상태

Microsoft는 "본 문서의 정보는 다음의 제품에 적용됩니다." 절에 나열된 Microsoft 제품에서 이 문제를 확인했습니다.

추가 정보

응용 프로그램의 핸들 누수가 있는지 확인하려면 Windows 작업 관리자에서 Handles 횟수를 모니터링하십시오.

빌드 및 다음 Visual C++ Win32 콘솔 프로젝트 코드를 실행할 때, 예를 들어, Handles 개수 Windows 작업 관리자에서 늘릴 계속:
// Testpopen.cpp : Defines the entry point for the console application.
//

#include "stdafx.h"
#include <stdio.h>
#include <conio.h>


int _tmain(int argc, _TCHAR* argv[])
{
	FILE * pPipe = NULL;
	char	buffer[128] = {0};

	while (!kbhit())
	{
		pPipe = _popen("dir *.* /s", "r");

		if (pPipe != NULL)
		{
			printf(_T("Pipe opened at 0x%08x\n"), (unsigned long)pPipe);

			while (!feof(pPipe))
			{
				if (fgets(buffer, 128, pPipe))
					printf(buffer);
			}

			printf("Pipe closed (%d)\n", _pclose(pPipe));			
		}
	}	

	return 0;

}

자세한 내용은 Microsoft 기술 자료의 다음 문서를 참조하십시오.
824684Microsoft 소프트웨어 업데이트를 설명하는 데 사용되는 표준 용어에 대한 설명

속성

기술 자료: 892086 - 마지막 검토: 2006년 5월 15일 월요일 - 수정: 2.2
본 문서의 정보는 다음의 제품에 적용됩니다.
  • Microsoft Visual C++ .NET 2003 Standard Edition
  • Microsoft Visual Studio .NET 2003 Professional Edition
  • Microsoft Visual Studio .NET 2003 Enterprise Developer
  • Microsoft Visual Studio .NET 2003 Enterprise Architect
  • Microsoft Visual Studio .NET 2003 Academic Edition
키워드:?
kbmt kbqfe kbbug kbfix kbprb kbhotfixserver KB892086 KbMtko
기계 번역된 문서
중요: 본 문서는 전문 번역가가 번역한 것이 아니라 Microsoft 기계 번역 소프트웨어로 번역한 것입니다. Microsoft는 번역가가 번역한 문서 및 기계 번역된 문서를 모두 제공하므로 Microsoft 기술 자료에 있는 모든 문서를 한글로 접할 수 있습니다. 그러나 기계 번역 문서가 항상 완벽한 것은 아닙니다. 따라서 기계 번역 문서에는 마치 외국인이 한국어로 말할 때 실수를 하는 것처럼 어휘, 구문 또는 문법에 오류가 있을 수 있습니다. Microsoft는 내용상의 오역 또는 Microsoft 고객이 이러한 오역을 사용함으로써 발생하는 부 정확성, 오류 또는 손해에 대해 책임을 지지 않습니다. Microsoft는 이러한 문제를 해결하기 위해 기계 번역 소프트웨어를 자주 업데이트하고 있습니다.

피드백 보내기

 

Contact us for more help

Contact us for more help
Connect with Answer Desk for expert help.
Get more support from smallbusiness.support.microsoft.com