最近在维护公司的以前项目中发现,使用到了进程相关知识。现在将此总结,以备后面查看复习。
一、进程查看器
程序在运行的时候,操作系统就会为其分配一个进程。那么进程到底是什么东西呢?
实际上,进程就是一些数据资源和一些代码(这里执行的代码可以看做线程)。
在.net中提供了一个命名空间“using System.Diagnostics;”,里面的Process类可以实现进程检查的能力。
下面介绍下这个类的简单使用。
1、process.GetProcessById(int processId);//根据指定的进程id查询该进程
2、process.GetProcessByName();//根据进程名查询该进程
3、process.GetProcess();//获取所有进程,返回:process[]
说明:①带远程计算机名字符串时,可以进行远程访问
Process[] myProcess=Process.GetProcess("远程计算机名")
或
Process[] myprocess=Process.GetProcessByName("远程计算机名","进程名");
二、进程属性
通过上面的方法我们可以得到进程对象,我们还可以根据进程得到很多其他数据。
PriorityClass---进程优先级的类别
BasePriority----进程优先级的数字表示
MachineName-----计算机名
Modules---------关联进程加载的模块
MainModule------关联进程的主模块
ProcessName-----进程名
WorkingSet64----获取进程分配的物理内存
stratTime-------获得进程启动时间
源码:
using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Diagnostics; namespace Demo { class Program { static void Main(string[] args) { int num = 0;//计数 Process [] pro=Process.GetProcesses(); for (int i = 0; i < pro.Length; i++) { string p=pro[i].ProcessName.ToString(); string startTime=(pro[i].StartTime).ToString(); string basePriority = (pro[i].BasePriority).ToString(); string MachineName = pro[i].MachineName; string WorkingSet64 = (pro[i].WorkingSet64).ToString(); Console.WriteLine("进程名:{0}", p); Console.WriteLine("进程启动时间{0}", startTime); Console.WriteLine("进程优先级{0}", basePriority); Console.WriteLine("计算机名{0}", MachineName);//由于是本机,所以是”.“ Console.WriteLine("进程物理内存{0} KB", WorkingSet64); Console.WriteLine("*************************************************************************************************"); Console.WriteLine(); num++; } Console.WriteLine("总共进程:{0}",num); } } }