zoukankan      html  css  js  c++  java
  • 二、进程

      进程和线程概念都比较简单,博客园上面已经有很多文章了;但还是学习巩固哈;加上一些例子;

      进程

      进程是操作系统结构的基础;是一次程序的执行;是一个程序及其数据在处理机上顺序执行时所发生的活动。也可以表述为:正在执行的程序称为进程。 与进程相关的信息包括:进程标示(进程)、文件名、执行的程序和数据,运行时间、在存储器中的位置、占用的内存容量等。

    进程管理(Process类)

      1、Process类位于System.Diagnostics命名空间下。

      2、对本机(也叫本地计算机)

        (1)可以启动、终止某个进程

        (2)可以查看进程相关信息,如CPU利用率等

        (3)可以查看进程工作状态

      3、对远程计算机

        (1)可以查看远程计算机相关信息

        (2)无法直接启动、终止远程计算机

      4、在一个程序中处理其他的程序(例如调用其他.exe文件、 快捷方式等),实际上就是对进程进行管理。

      Process类常用的属性和方法   

      -----------------------获取进程实例-------------------

       GetProcessById方法(静态方法):

        通过进程Id创建新的Process组件,并将其与本地计算机上的进程资源关联。 GetProcessById最多只有一个Process实例。

       GetProcesses方法(静态方法):

        获取本机所有进程 GetProcessesByName方法(静态方法):获取本机上特定名称的进程

      -----------------------获取及设置优先级---------------

      BasePriority属性: 获取进程优先级(只读) PriorityClass 属性:设置或更改进程优先级

      ---------------------------进程ID及进程名-----------------------

      Id属性:获取关联进程的唯一标识符

      ProcessName属性:获取该进程的名称,不包括路径和扩展名

       ---------------------------进程其他信息-------------------------

      MachineName属性:获取关联进程正在其上运行的计算机名称

      MainModule属性:获取关联进程的主模块

      Modules属性:获取由关联进程加载的模块

      TotalProcessorTime属性:获取进程的总的处理器时间

      StartTime属性:获取关联进程的启动时间

      WorkingSet64属性:为进程分配的物理内存量(字节数)

      -----------------------进程启动-------------------------

      Start方法:启动进程资源并将其与Process组件关联

      StartInfo属性:获取或设置要传递给启动进程的文件名以及启动参数

      -----------------------进程终止-------------------------

      Kill方法:强制终止进程

      CloseMainWindow方法:关闭具有用户界面的进程

      Close方法:释放与此组件关联的所有资源

      HasExited属性:指示关联进程是否已终止

      WaitForExit方法:设置等待关联进程退出的时间,并在该段时间结束前或该进程退出前,阻止当前线程执行。

      获取进程信息

      1、如何获取进程信息

      (1)获取本地计算机的所有进程:   

        Process[] myProcesses = Process.GetProcesses();

      (2)获取本地计算机上指定名称的进程:

        Process[] myProcesses = Process.GetProcessesByName("进程名称");

        注意:

        (a)进程名称不带扩展名。

        (b)可以是任何一个可执行文件

        例如:

         Process[] myProcesses = Process.GetProcessesByName (“WindowApplication1");

      (3)获取远程计算机的所有进程:

        Process[] myProcesses = Process.GetProcesses (remoteMachineName);

        例如:

        Process[] myProcesses = Process.GetProcesses ("192.168.0.1");

      (4)获取远程计算机上指定名称的进程:

        Process[] myProcesses = Process.GetProcessesByName( "远程进程名称",remoteMachineName);

      启动和停止进程

      1. 启动进程:

        方法1:

        (1)创建一个Process组件的实例,

          例如:

            Process myProcess = new Process();

        (2)设置其对应的StartInfo属性,指定要运行的应用程序名以及传递的参数:

             myProcess.StartInfo.FileName = "文件名";

             process1.StartInfo.Arguments = "参数";

        如果该进程带有图形用户界面,也可以指定图形用户界面的打开方式。

          例如:

            myProcess.StartInfo.WindowStyle = ProcessWindowStyle.Normal;

        (3)调用该实例的Start方法启动该进程。

        方法2: 直接调用Process类提供的静态方法启动进程。

      2. 停止进程 通过两种方法利用Process组件停止进程。

        (1)如果进程有图形用户界面,调用CloseMainWindow方法。

        (2)如果进程没有用户界面,调用进程的Kill方法。 不论有没有图形用户界面,如果希望强行让其退出,在权限允许的情况下,均可以调用Kill方法终止该进程。

      进程demo

  • 相关阅读:
    总公司路由排错?
    黄永成-thinkphp讲解-个人博客讲解26集
    fedora配置网络
    只有文本编辑器才是王道, 什么ide都是evil的浮云, 看看linus linux的内核开发工具vim emacs
    痛苦的事, 伤心的事, 一生只需要一次, 别折腾, 别忘痛- 人生, 软件, 所有人皆如是!
    我再也不-或许永远不-用zend studio-受够了!
    linux安装-版本选择-终极决定
    黄永成-thinkphp讲解-个人博客讲解25集
    linux的多媒体 播放 软件版权问题
    如何解决winows启动后出现grub?
  • 原文地址:https://www.cnblogs.com/xchit/p/socket_2.html
Copyright © 2011-2022 走看看