REVISIÓN: Un identificador de aplicación pérdidas cuando llame a la función de _popen de CRT en Visual C++ .NET 2003

Seleccione idioma Seleccione idioma
Id. de artículo: 892086 - Ver los productos a los que se aplica este artículo
Expandir todo | Contraer todo

Síntomas

Cuando se utiliza el C tiempo de ejecución (CRT) _popen función en Microsoft Visual C++ .NET 2003, las pérdidas de sus aplicación un identificador de cada vez que se llama a la función.

Causa

Para ayudar a mejorar el rendimiento, la implementación de la función de _popen CRT se cambió en Visual C++ .NET 2003. La función de _popen CRT ahora utiliza la función WinAPI CreateProcess en lugar de la función _spawnl de CRT. La pérdida de identificador está causada por un error en Visual C++ .NET 2003. Este error hace que el campo de identificador de hThread de la estructura PROCESS_INFORMATION permanezcan abiertos.

Solución

Ahora hay disponible un hotfix para el que Microsoft proporciona soporte técnico, pero que sólo se diseñó para corregir el problema descrito en este artículo. Aplíquelo sólo a sistemas que experimenten este problema específico. Este hotfix puede ser sometido a comprobaciones adicionales. Por lo tanto, si no se ve muy afectado por este problema, recomendamos que espere al próximo service pack de Visual Studio .NET 2003 que contenga este hotfix.

Para resolver este problema inmediatamente, póngase en contacto con soporte técnico de Microsoft para obtener la revisión. Para obtener una lista completa de los números de teléfono de los servicios de soporte técnico de Microsoft e información acerca de los costos de soporte, visite el siguiente sitio Web:
http://support.microsoft.com/contactus/?ws=support
Nota en casos especiales, los costos derivados normalmente de las llamadas al soporte técnico pueden cancelarse si un profesional de soporte técnico de Microsoft determina que una actualización específica resolverá el problema. Los costos habituales de soporte se aplicarán a las preguntas de soporte técnico adicionales y problemas que no guarden relación con la actualización en cuestión.

Requisitos previos

No se necesita ningún requisito previo.

Requisito de reinicio

No es necesario que reinicie el equipo una vez aplicado este hotfix.

Información acerca de la sustitución de la revisión

Este hotfix no sustituye a otros hotfix.

Información de archivo

La versión en inglés de este hotfix tiene los atributos de archivo (o atributos de último archivo) mostrados en la siguiente tabla. Las fechas y las horas de estos archivos se muestran en hora universal coordinada (UTC). La información de los archivos se convertirá a la hora local cuando la vea. Para averiguar la diferencia entre hora UTC y la hora local, utilice la ficha zona horaria de la herramienta fecha y hora en el panel de control.
   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

Estado

Microsoft ha confirmado que se trata de un problema de los productos de Microsoft enumerados en la sección "La información de este artículo se refiere a:".

Más información

Para comprobar que la aplicación tiene una pérdida de identificadores, supervise el número Handles en el Administrador de tareas de Windows.

Por ejemplo, cuando genere y ejecute el código de proyecto de consola de Win32 de Visual C++ siguiente, el recuento de Handles continuará aumentar en el Administrador de tareas de 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;

}

Para obtener información adicional, haga clic en el número de artículo siguiente para verlo en Microsoft Knowledge Base:
824684Descripción de la terminología estándar utilizada para describir las actualizaciones de software de Microsoft

Propiedades

Id. de artículo: 892086 - Última revisión: lunes, 15 de mayo de 2006 - Versión: 2.2
La información de este artículo se refiere a:
  • Microsoft Visual C++ .NET 2003 Standard
  • Microsoft Visual Studio .NET 2003 Professional
  • Microsoft Visual Studio .NET 2003 Enterprise Developer
  • Microsoft Visual Studio .NET 2003 Enterprise Architect
  • Microsoft Visual Studio .NET 2003 Academic Edition
Palabras clave: 
kbmt kbqfe kbbug kbfix kbprb kbhotfixserver KB892086 KbMtes
Traducción automática
IMPORTANTE: Este artículo ha sido traducido por un software de traducción automática de Microsoft (http://support.microsoft.com/gp/mtdetails) en lugar de un traductor humano. Microsoft le ofrece artículos traducidos por un traductor humano y artículos traducidos automáticamente para que tenga acceso en su propio idioma a todos los artículos de nuestra base de conocimientos (Knowledge Base). Sin embargo, los artículos traducidos automáticamente pueden contener errores en el vocabulario, la sintaxis o la gramática, como los que un extranjero podría cometer al hablar el idioma. Microsoft no se hace responsable de cualquier imprecisión, error o daño ocasionado por una mala traducción del contenido o como consecuencia de su utilización por nuestros clientes. Microsoft suele actualizar el software de traducción frecuentemente.
Haga clic aquí para ver el artículo original (en inglés): 892086

Enviar comentarios

 

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