| |||||||||||||||||||||
サイト内検索
カスタム検索
|
ワーカープロセスを列挙する方法マネージド コード API を使って、現在実行中のワーカープロセスを列挙する方法を示します。 Microsoft.Web.Administration 名前空間の、ServerManager から WorkerProcesses コレクションを取得することができ、これらの要素である WorkerProcess から情報を取得できます。 尚、以下のサンプルではプロセス ID が取れたついでに、System.Diagnostics.Process オブジェクトも取得して、その結果を少し表示しています。 コードサンプルソースコードEnumWP.cs として以下を保存します。 // // EnumWP.cs // // Author: Dado-san // http://keicode.com/ // using System; using System.Diagnostics; using Microsoft.Web.Administration; ////////////////////////////////////////////////////////////////////////// class EnumWorkerProcessApp { public static void Main() { EnumWorkerProcess(); } public static void EnumWorkerProcess() { ServerManager manager = new ServerManager(); if ( manager.WorkerProcesses.Count == 0 ) { Console.WriteLine ( "No worker process running." ); return; } foreach ( WorkerProcess wp in manager.WorkerProcesses ) { Console.WriteLine ( "AppPoolName: {0}", wp.AppPoolName ); Console.WriteLine ( "ProcessId: {0}", wp.ProcessId ); Console.WriteLine ( "ProcessGuid: {0}", wp.ProcessGuid ); Console.WriteLine ( "State: {0}", wp.State ); foreach ( ApplicationDomain ad in wp.ApplicationDomains ) { Console.WriteLine ( "ApplicationDomain: {0}", ad.VirtualPath ); Console.WriteLine ( " PhysicalPath: {0}", ad.PhysicalPath ); Console.WriteLine ( " Idle: {0}", ad.Idle ); Console.WriteLine ( " Id: {0}", ad.Id ); } // System.Diagnostics.* Process p = Process.GetProcessById ( wp.ProcessId ); ShowProcessInfo( p ); } } public static void ShowProcessInfo ( Process p ) { Console.WriteLine ( "BasePriority: {0}", p.BasePriority ); Console.WriteLine ( "HandleCount: {0}", p.HandleCount ); Console.WriteLine ( "MachineName: {0}", p.MachineName ); Console.WriteLine ( "MainModule: {0}", p.MainModule ); Console.WriteLine ( "MainWindowTitle: {0}", p.MainWindowTitle ); Console.WriteLine ( "MaxWorkingSet: {0}", p.MaxWorkingSet ); } } makefile は次のようになります。
CSC = csc.exe
TARGETNAME=enumwp
SOURCE_FILE=enumwp.cs
REF=/r:$(SYSTEMROOT)\System32\inetsrv\Microsoft.Web.Administration.dll
OUTDIR=.\chk
all: "$(OUTDIR)\$(TARGETNAME).exe"
"$(OUTDIR)" :
@if not exist "$(OUTDIR)" mkdir "$(OUTDIR)"
CSC_OPT=\
/nologo\
/target:exe\
/out:$(OUTDIR)\$(TARGETNAME).exe\
/doc:$(OUTDIR)\$(TARGETNAME).xml\
/debug+\
/debug:full\
/optimize-\
/warn:4
$(OUTDIR)\$(TARGETNAME).exe: "$(OUTDIR)" $(SOURCE_FILE)
$(CSC) $(CSC_OPT) $(REF) $(SOURCE_FILE)
ビルド上記を nmake でビルドしてください。chk サブディレクトリの中に enumwp.exe が出来上がります。 実行例上で作成した enumwp.exe を実行すると以下の結果を得ました。
> enumwp
AppPoolName: DefaultAppPool
ProcessId: 3808
ProcessGuid: 9464250e-2b06-476a-999b-a4ca79e1d65d
State: Running
ApplicationDomain: /vdir/
PhysicalPath: C:\temp\
Idle: 1
Id: /LM/W3SVC/1/ROOT/vdir
BasePriority: 8
HandleCount: 402
MachineName: .
MainModule: System.Diagnostics.ProcessModule (w3wp.exe)
MainWindowTitle:
MaxWorkingSet: 1413120
>
| ||||||||||||||||||||
© 2008-2010 小山圭介 All Rights Reserved. |
|||||||||||||||||||||