网站导航免费论文 原创论文 论文搜索 原创论文 网学软件 学术大家 资料中心 会员中心 问题解答 原创论文 论文素材 设计下载 最新论文 下载排行 论文上传 在线投稿 联系我们
返回网学首页
网学联系
最新论文 推荐专题 热门论文 素材专题
当前位置: 网学 > 编程文档 > DELPHI > 正文
异常死亡进程的自动复活
来源:Http://myeducs.cn 联系QQ:点击这里给我发消息 作者: 用户投稿 来源: 网络 发布时间: 12/10/12
下载{$ArticleTitle}原创论文样式

上海三吉电子工程有限公司 卓乃奇  

一、问题的产生
我们或多或少都有这样的经历,在Windows上运行的应用程序常常会异常终止,需要通过手工重新将其启动起来。若计算机无人看守,异常终止的进程不能实时启动,则可能给生产造成损失。
本人在开发GPS全球卫星定位系统控制中心程序时,就遇到过控制中心程序异常终止死亡的情况,由此,找出了一个自动复活死亡进程的方法,供参考。
二、相关知识
通常,把一个应用程序的一次运行实例叫做一个进程,在一个进程内又可包含多条可并发执行的路径,每条执行路径叫做一个线程,一个进程至少包含一个主线程。主线程负责执行运行的启动代码。另外,一个进程可以创建若干子进程。当进程被创建时,系统自动产生主线程,主线程然后可创建更多的线程。
我们可以编写一个程序,让其创建、启动子进程,并监视进程的运行情况,在其出现异常终止时,立即重新创建并启动子进程即可。
三、相关函数  
1、创建一个子进程函数:
BOOL CreateProcess(
LPCTSTR lpApplicationName,
LPTSTR lpCommandLine,
LPSECURITY_ATTRIBUTES lpProcessAttributes,
LPSECURITY_ATTRIBUTES lpThreadAttributes,
BOOL bInheritHandles,  
DWORD dwCreationFlags,  
LPVOID lpEnvironment,  
LPCTSTR lpCurrentDirectory,
LPSTARTUPINFO lpStartupInfo,  
LPPROCESS_INFORMATION lpProcessInformation  
);
参数说明:
lpApplicationName:新进程将要使用的可执行文件的名字,必须包含扩展名。
LpCommandLine:新进程的命令行。若lpApplicationName为NULL,LpCommandLine 的第一个参数是新进程将要使用的可执行文件的名字,可以不包含扩展名,系统假定是exe文件。
LpProcessAttributes和lpThreadAttributes:分别是给进程对象和线程对象指定的安全属性。
BInheritHandles:指定该进程是否继承其父进程中的句柄。
dwCreationFlags:指定新进程产生方式的标志,可用逻辑操作符or相连接。
LpEnvironment:指向含有新进程将要使用的环境块字符串的一块内存,一般为NULL,使子进程继承父进程的一组环境块。
LpCurrentDirectory:设置子进程的当前驱动器和工作目录, 为NULL,子进程继承父进程的当前驱动器和工作目录。
LpStartupInfo:指向STARTUPINFO 的结构。一般让子进程使用缺省值。但要把该结构中的所有成员初始化为0,并设置cb为结构大小。
STARTUPINFO 结构如下:
typedef struct _STARTUPINFO {  
DWORD cb;  
LPTSTR lpReserved;  
LPTSTR lpDesktop;  
LPTSTR lpTitle;  
DWORD dwX;  
DWORD dwY;  
DWORD dwXSize;  
DWORD dwYSize;  
DWORD dwXCountChars;  
DWORD dwYCountChars;  
DWORD dwFillAttribute;  
DWORD dwFlags;  
WORD wShowWindow;  
WORD cbReserved2;  
LPBYTE lpReserved2;  
HANDLE hStdInput;  
HANDLE hStdOutput;  
HANDLE hStdError;  
} STARTUPINFO, *LPSTARTUPINFO;
lpProcessInformation 参数指向LPPROCESS_INFORMATION结构,CreateProcess在返回之前,填入有关子进程的信息,父进程正是利用该信息监测子进程是否终止。该结构如下:
typedef struct _PROCESS_INFORMATION {  
HANDLE hProcess;  
HANDLE hThread;  
DWORD dwProcessId;  
DWORD dwThreadId;  
} PROCESS_INFORMATION;  
hProcess和hThread分别是子进程的句柄和子进程的主线程的句柄,
  • 下一篇资讯: 一些关于点的函数
  • 网学推荐

    免费论文

    原创论文

    浏览:
    设为首页 | 加入收藏 | 论文首页 | 论文专题 | 设计下载 | 网学软件 | 论文模板 | 论文资源 | 程序设计 | 关于网学 | 站内搜索 | 网学留言 | 友情链接 | 资料中心
    版权所有 QQ:3710167 邮箱:3710167@qq.com 网学网 [Myeducs.cn] 您电脑的分辨率是 像素
    Copyright 2008-2015 myeducs.Cn www.myeducs.Cn All Rights Reserved
    湘ICP备09003080号