zoukankan      html  css  js  c++  java
  • 一个简单的进程察看器

    using System;
    using System.Diagnostics;

    namespace ProcessManager
    {
        
    /// <summary>
        
    /// Summary description for Class1.
        
    /// </summary>

        class MainEntry
        
    {
            
    /// <summary>
            
    /// The main entry point for the application.
            
    /// </summary>

            [STAThread]
            
    static void Main(string[] args)
            
    {
                
    if(args.Length<1)ListProcesses();
                
    else if(args[0].Length>0)ListProcess(args[0]);
            }


            
    private static void ListProcesses()
            
    {
                
    string output = "";
                
    int limit = 36;
                Console.WriteLine(
    "PID".PadRight(6)+"Name".PadRight(16)+"Memory".PadLeft(10)+"VM size".PadLeft(10)+"Threads count".PadLeft(20));
                Console.WriteLine(
    "-".PadRight(limit+34,'-'));
                
    foreach(Process proc in Process.GetProcesses())
                
    {
                    
                    
    string pid = proc.Id.ToString();
                    
    string pname = proc.ProcessName;
                    
    string pcount = proc.Threads.Count.ToString();
                    
    string pmemsize = (proc.PeakWorkingSet/1024).ToString()+"K";
                    
    string pvmsize = (proc.PeakPagedMemorySize/1024).ToString()+"K";
                    
                    output 
    = String.Format("{0}{1}{2}{3}{4}",pid.PadRight(6),pname.PadRight(16),pmemsize.PadLeft(10),pvmsize.PadLeft(10),pcount.PadLeft(10));
                    Console.WriteLine(output);
                }

            }
             

            
    private static void ListProcess(string processid)
            
    {
                
    int pid = -1;
                
    try
                
    {
                    pid 
    = Convert.ToInt32(processid);
                }

                
    catch
                
    {

                }


                
    if(-1 == pid)
                
    {
                    Console.WriteLine(
    "Invalid processID!");
                    
    return;
                }


                
    string output = "";
                Process proc 
    = null;
                
    try
                
    {
                    proc 
    = Process.GetProcessById(pid);
                }

                
    catch
                
    {

                }

                
    if(null == proc)
                
    {
                    Console.WriteLine(
    "Invalid processID!");
                    
    return;
                }


                Console.WriteLine(
    "PID:"+proc.Id.ToString());
                
                Console.WriteLine(
    "-".PadRight(50,'-'));
    //            Console.WriteLine("Main Module");
    //            Console.WriteLine("-".PadRight(50,'-'));
                Console.WriteLine("Module Name".PadRight(50)+"Memory Size");
                WriteModuleInformation(proc.MainModule);

                Console.WriteLine(
    "-".PadRight(50,'-'));
    //            Console.WriteLine("All Modules");
    //            Console.WriteLine("-".PadRight(50,'-'));
                Console.WriteLine("Module Name".PadRight(50)+"Memory Size");
                
    foreach(ProcessModule pm in proc.Modules)WriteModuleInformation(pm);
                
                Console.WriteLine(
    "-".PadRight(50,'-'));
                Console.WriteLine(
    "Thread List:");
                Console.WriteLine(
    "-".PadRight(50,'-'));
                Console.WriteLine(
    "ID".PadRight(6)+"Thread State".PadRight(20)+"Total Processor Time");
                Console.WriteLine(
    "-".PadRight(50,'-'));
                
    foreach(ProcessThread pt in proc.Threads)
                
    {
                    output 
    = String.Format("{0}{1}{2}",pt.Id.ToString().PadRight(6),pt.ThreadState.ToString().PadRight(20),pt.TotalProcessorTime);
                    Console.WriteLine(output);
                }

            }


            
    private static void WriteModuleInformation(ProcessModule pm)
            
    {
                Console.WriteLine(String.Format(
    "{0}{1}",pm.ModuleName.PadRight(50),(pm.ModuleMemorySize/1024).ToString().PadLeft(10)+"K"));
            }

        }

    }

  • 相关阅读:
    带宽利用率提升50%,腾讯云联网架构方案解析
    重构实践:基于腾讯云Elasticsearch搭建QQ邮箱全文检索
    存算分离下写性能提升10倍以上,EMR Spark引擎是如何做到的?
    秒级去重:ClickHouse在腾讯海量游戏营销活动分析中的应用
    降本提效,贝壳搜索推荐架构统一之路
    亿级用户,腾讯看点信息流推荐系统的架构挑战
    优秀程序员,如何提高架构能力?
    如何创建体元栅格?
    导出属性表字段结构
    去除镶嵌数据集中影像的黑边或白边
  • 原文地址:https://www.cnblogs.com/juqiang/p/51322.html
Copyright © 2011-2022 走看看