在C#中,創建子進程通常是通過使用System.Diagnostics.Process
類來實現的
using System;
using System.Diagnostics;
class Program
{
static void Main()
{
ProcessStartInfo startInfo = new ProcessStartInfo("notepad.exe")
{
RedirectStandardOutput = true,
UseShellExecute = false
};
Process process = new Process();
process.StartInfo = startInfo;
process.Start();
// 等待子進程退出
process.WaitForExit();
// 獲取子進程的資源占用情況
TimeSpan totalProcessorTime = process.TotalProcessorTime;
long peakWorkingSet64 = process.PeakWorkingSet64;
long peakVirtualMemorySize64 = process.PeakVirtualMemorySize64;
Console.WriteLine($"Total Processor Time: {totalProcessorTime}");
Console.WriteLine($"Peak Working Set: {peakWorkingSet64 / 1024} KB");
Console.WriteLine($"Peak Virtual Memory Size: {peakVirtualMemorySize64 / 1024} KB");
process.Close();
}
}
在這個示例中,我們創建了一個新的Process
對象,并使用ProcessStartInfo
類來指定要運行的應用程序(在本例中為Notepad)。然后,我們設置RedirectStandardOutput
屬性以捕獲子進程的輸出,并將UseShellExecute
屬性設置為false
以啟用重定向。
接下來,我們調用process.Start()
方法來啟動子進程,并使用process.WaitForExit()
方法等待子進程退出。一旦子進程退出,我們就可以使用TotalProcessorTime
、PeakWorkingSet64
和PeakVirtualMemorySize64
屬性來獲取子進程的資源占用情況。
請注意,這些屬性只能在子進程退出之后才能訪問。如果你需要在子進程運行期間實時監控其資源占用情況,可以考慮使用PerformanceCounter
類或其他性能監視工具。