在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
类或其他性能监视工具。