FIX Visual C CRT _popen 関数を呼び出すとアプリケーション ハンドル リークします。NET 2003

重要: このサポート技術情報 (以下「KB」) は、翻訳者による翻訳の代わりに、マイクロソフト機械翻訳システムによって翻訳されたものです。マイクロソフトは、お客様に、マイクロソフトが提供している全ての KB を日本語でご利用いただけるように、翻訳者による翻訳 KB に加え機械翻訳 KB も提供しています。しかしながら、機械翻訳の品質は翻訳者による翻訳ほど十分ではありません。誤訳や、文法、言葉使い、その他、たとえば日本語を母国語としない方が日本語を話すときに間違えるようなミスを含んでいる可能性があります。マイクロソフトは、機械翻訳の品質、及び KB の内容の誤訳やお客様が KB を利用されたことによって生じた直接または間接的な問題や損害については、いかなる責任も負わないものとします。マイクロソフトは、機械翻訳システムの改善を継続的に行っています。

英語版 KB:892086
この資料は、アーカイブされました。これは "現状のまま" で提供され、更新されることはありません。
現象
C ランタイム (CRT) を使用すると、 _popen Microsoft Visual C で機能します。Net アプリケーション関数を呼び出すたびにハンドル リークが発生します。
原因
CRT の実装のパフォーマンスを向上させるために _popen Visual C では、関数が変更されました。NET 2003 です。CRT _popen 関数が、WinAPI を使用してください。 CreateProcess 関数、CRT の代わりに _spawnl 関数です。Visual C でのバグにより、ハンドル リークが原因です。NET 2003 です。このバグが発生する、 hThread 開いたままになり、PROCESS_INFORMATION 構造体のフィールドを処理します。
解決方法
サポートされている修正プログラム今すぐ、用意していますが、これだけはこの資料に記載されている問題を修正するものです。この問題が発生しているシステムにのみ適用します。この修正プログラムは、今後さらにテストが表示されます。したがって、この問題で深刻な影響をされていない場合は、次の Visual Studio のリリースを待つことをお勧めします。Net サービス パックこの修正プログラムが含まれています。

この問題を解決するには、Microsoft 製品サポート サービス、修正プログラムを入手するに問い合わせてください。Microsoft 製品サポート サービスの電話番号とサポート コストに関する情報の完全な一覧については、次のマイクロソフト Web サイトを参照してください。メモ Microsoft Support 担当者が特定の更新で問題が解決されると判断した場合は特殊なケースでは、料金が通常のサポート免除されるキャンセルする可能性があります。追加の質問および問題の特定のアップデートの対象とならない問題、通常のサポート料金が適用されます。

前提条件

必要条件はありません。

再起動の必要性

この修正プログラムを適用した後コンピューターを再起動するはありません。

修正プログラムの置き換えに関する情報

この修正プログラムは、他の修正プログラムに置き換えられない。

ファイル情報

この修正プログラムの英語版がファイル属性 (またはそれ以降のファイル属性) が、次のとおり。日付および時刻これらのファイルを世界協定時刻 (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
状況
マイクロソフトでは、この「対象」に記載されているマイクロソフト製品の問題として認識しています。
詳細
アプリケーションが、ハンドルのリークが発生していることを確認するには、監視、 ハンドル Windows タスク マネージャーでをカウントします。

たとえば、構築し、次の Visual C Win32 コンソール プロジェクトのコードを実行、 ハンドル 数は、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;}
詳細については、Knowledge Base の資料を参照するのには、次の資料番号をクリックしてください。
824684マイクロソフトのソフトウェア更新プログラムの説明に使用される一般的な用語の説明
Visual Studio 更新プログラム QFE 3432

警告: この記事は自動翻訳されています

プロパティ

文書番号:892086 - 最終更新日: 12/09/2015 02:02:04 - リビジョン: 4.0

  • kbnosurvey kbarchive kbbug kbfix kbqfe kbprb kbhotfixserver kbmt KB892086 KbMtja
フィードバック