为了正常的体验网站,请在浏览器设置里面开启Javascript功能!

自动复活异常终止进程-计算机论文

2017-09-27 4页 doc 55KB 10阅读

用户头像

is_005190

暂无简介

举报
自动复活异常终止进程-计算机论文自动复活异常终止进程-计算机论文 [真诚为您服务] 上海三吉电子工程有限公司卓乃奇01-6-26上午10:09:05 问题的产生微软公司的Windows操作系统已深入到各个领域,基于Windows的应用程序更是层出不穷。但人们或多或少都有这样的经历,运行在Windows上的应用程序会发生异常终止,这时一般要通过手工重新将其启动。此时,若计算机无人看管,则异常终止的进程就有可能影响正常工作。笔者在开发GPS全球卫星定位系统控制中心程序时,就碰到过控制中心程序异常终止的情况。本文介绍一种方法,可以自动复活这种异常终止的进程。...
自动复活异常终止进程-计算机论文
自动复活异常终止进程-计算机论文 [真诚为您服务] 上海三吉电子有限公司卓乃奇01-6-26上午10:09:05 问题的产生微软公司的Windows操作系统已深入到各个领域,基于Windows的应用程序更是层出不穷。但人们或多或少都有这样的经历,运行在Windows上的应用程序会发生异常终止,这时一般要通过手工重新将其启动。此时,若计算机无人看管,则异常终止的进程就有可能影响正常工作。笔者在开发GPS全球卫星定位系统控制中心程序时,就碰到过控制中心程序异常终止的情况。本文介绍一种方法,可以自动复活这种异常终止的进程。实现原理通常,把一个应用程序的一次运行实例叫做一个进程,在一个进程内又可包含多条可并发执行的路径,每条执行路径叫做一个线程,一个进程至少包含一个主线程。主线程负责执行运行的启动代码。另外,一个进程可以创建若干子进程。当进程被创建时,系统自动产生主线程,然后主线程可创建更多的线程。因此,我们可以编写一个程序,由其创建、启动子进程,并监视进程的运行情况,在其出现异常终止时,立即重新创 建并启动子进程。主要函数1.创建一个子进程BOOLCreateProcess;参数说明:lpApplicationName:新进程将要使用的可执行文件的名字,包含扩展名;:新进程的命令行,若lpAppl icationName为NULL,则它的第一个参数是新进程将要使用的可执行文件的名字,可以不包含扩展名,系统默认是.exe文件;和lpThreadAttributes:分别是给进程对象和线程对象指定的安全属性; :指定该进程是否继续其父进程的句柄; :指定新进程产生方式的标志,在不同方式之间可用逻辑操作符or相连接;:指向含有新进程将要使用的环境块字符串 的一块内存,一般为NULL;:设置子进程的当前驱动器和工作目录,为NULL时,子进程继续父进程的当前驱动器和工作目录; :指向STARTUPINFO结构,一般子进程使用缺省值,但要把该结构中的所有成员初始化为0,并设置cb为结构大小; :该参数指向LPPROCESS_INFORMATION结构,CreateProcess在返回之前,填入有关子进程的信息,父进程正是利用该信息监测子进程是否终止。2.子进程终止检测函数GetEXitCodePr ocess;其中hProcess为进程句柄,lpExitCode为进程终止时的退出码。假如一个进程没有终止,lpExitCode的返回值是STILL_ACTIVE,否则返回其他值。编程实现本文以Delphi5为例,介绍该方法的具体实现步骤。1.创建一个新项目在单Form1上放置一个Memo组件和一个OK按钮组件,改变OK按钮组件的Caption属性为CreateProcess。再放置一个Timer组件,设置Timer组件的Interval值为1000,即每秒钟检查一次进程是否终止。2.说明过程和变量procedureEstablishProcess;piProcInfoGPS: PROCESS_INFORMATION;3.编写EstablishProcess过程的实现代码procedureEstablishProcess;VarsiStar tupInfo:STARTUPINFO;saProcess,saThread: SECURITY_ATTRIBUTES;fSuccess:boolean;beginfSuccess:=false;ZeroMemory);siStartupInfo.cb: =sizeof;saProcess.nLength: =sizeof;saProcess.lpSecurityDescriptor: =PChar;saProcess.bInheritHandle:=true;saThread.nLength:=sizeof;saThread.lpSecurityDescriptor: =PChar;saThread.bInheritHandle:=true;fSuccess: =CreateProcess,‘c:“sr350“Sr350buff’,@saProcess,@saThread,false,CREATE_DEFAULT_ERROR_MODE,Pchar(ni l), Pchar,siStartupInfo, piProcInfoGPS);ifthenForm1.Memo1.Lines.AddelseForm1.Memo1.L ines.Addend;4.在CreateProcess按钮的OnClick事件中调用过程EstablishProcess;5.为Timer1的OnTimer事件编写代码ProcedureTForm1.Timer1Timer;VardwExitCode: DWORD;fprocessExit:boolean;BegindwExitCode: =0;fprocessExit:=false;fprocessExit:=GetExitCodeProcess(piProcInfoGPS.hProcess,dwExitCode );if) thenbeginMemo1.Lines.Add;CloseHandle;CloseHandle;EstablishP rocess;end;end;6.编译链接后运行程序运行程序后可以看到c:“sr350“sr350buff.exe被启动,此时若杀掉sr350buff.exe进程,则sr350buff.exe自动再启动。注重:本文设可执行文件名为c: “sr350“sr350buff.exe,所以c:盘“sr350目录下需有sr350buff.exe文件。
/
本文档为【自动复活异常终止进程-计算机论文】,请使用软件OFFICE或WPS软件打开。作品中的文字与图均可以修改和编辑, 图片更改请在作品中右键图片并更换,文字修改请直接点击文字进行修改,也可以新增和删除文档中的内容。
[版权声明] 本站所有资料为用户分享产生,若发现您的权利被侵害,请联系客服邮件isharekefu@iask.cn,我们尽快处理。 本作品所展示的图片、画像、字体、音乐的版权可能需版权方额外授权,请谨慎使用。 网站提供的党政主题相关内容(国旗、国徽、党徽..)目的在于配合国家政策宣传,仅限个人学习分享使用,禁止用于任何广告和商用目的。

历史搜索

    清空历史搜索