2011.11.1好日子,今天博客访问量超过1000了。
2012.01.29,访问量突破2000了.
2012.02.01,访问量突破3000了.继续进步
自动化测试自我培训(脚本语言-TcL进程通信)
上一篇 /
下一篇 2011-10-17 02:05:31
/ 个人分类:自动化脚本
Tcl提供了一些用于处理进程的命令.
进程是操作系统结构的基础;是一个正在执行的程序;计算机中正在运行的程序实例;可以分配给处理器并由处理器执行的一个实体;由单一顺序的执行显示,一个当前状态和一组相关的系统资源所描述的活动单元.进程的概念主要有两点:第一,进程是一个实体。每一个进程都有它自己的地址空间,一般情况下,包括文本区域(text region)、数据区域(data region)和堆栈(stack region)。文本区域存储处理器执行的代码;数据区域存储变量和进程执行期间使用的动态分配的内存;堆栈区域存储着活动过程调用的指令和本地变量。第二,进程是一个“执行中的程序”。程序是一个没有生命的实体,只有处理器赋予程序生命时,它才能成为一个活动的实体,我们称其为进程。
线程是"进程"中某个单一顺序的控制流。也被称为轻量进程(lightweight processes)。计算机科学术语,指运行中的程序的调度单位。是程序执行流的最小单元。一个标准的线程由线程ID,当前指令指针(PC),寄存器集合和堆栈组成。一个线程可以创建和撤消另一个线程,同一进程中的多个线程之间可以并发执行。
线程和进程的区别在于,子进程和父进程有不同的代码和数据空间,而多个线程则共享数据空间,每个线程有自己的执行堆栈和程序计数器为其执行上下文。多线程主要是为了节约CPU时间,发挥利用,根据具体情况而定。线程的运行中需要使用计算机的内存资源和CPU。
线程与进程的区别可以归纳为以下几点:
地址空间和其它资源(如打开文件):进程间相互独立,同一进程的各线程间共享。某进程内的线程在其它进程不可见。
通信:进程间通信IPC,线程间可以直接读写进程数据段(如全局变量)来进行通信——需要进程同步和互斥手段的辅助,以保证数据的一致性。
调度和切换:线程上下文切换比进程上下文切换要快得多。
在多线程OS中,进程不是一个可执行的实体。
而我们需要控制一个进程的话,在Tcl中,是以获取PID的方法来执行.PID就是各进程的身份标识,程序一运行系统就会自动分配给进程一个独一无二的PID。进程中止后PID被系统回收,可能会被继续分配给新运行的程序。
通过脚本进行启动和杀掉进程:
package require twapi
set eclipse [file join D:/ codesoftware {eclipse-SDK-3.7-win32} eclipse eclipse.exe]
set eclipsepath [file join D:/ codesoftware {eclipse-SDK-3.7-win32} eclipse]
#通过这里获取该No
set No [twapi::create_process $eclipse -startdir $eclipsepath]
#由于获取的No不一定都为数字,需要匹配出来
regexp -nocase {([0-9]+)} $No pidNO
after 20000
通过此关键字杀掉进程
exec taskkill /pid $pidNO
收藏
举报
TAG: