进程的创建与销毁_创建和销毁进程实验

2020-02-28 其他范文 下载本文

进程的创建与销毁由刀豆文库小编整理,希望给你工作、学习、生活带来方便,猜你可能喜欢“创建和销毁进程实验”。

一.实验目的(1)加深对进程概念的理解和进程创建与撤消算法;

(2)进一步认识并发执行的实质。

二.实验内容

(1)进程管理认识:通过windows “任务管理器”观察进程的状态,进行进程的创建、切换和撤销。

(2)进程创建与撤销:通过系统调用编程实现进程的创建与撤销功能,并在屏幕上观察进程活动的结果。

三.实验步骤

(1)任务分析:

以下是创建进程的关键知识:

进程创建和撤销需要调用CreateProce()和TerminateProce()。CreateProce()实际上是运行一个新的可执行程序,这里,需要设置其必备的参数。而终止进程则首先是要找到运行进程的句柄,然后终止该进程。

(2)程序设计:

a.总体设计:

通过main()函数调用两个函数void startproce()和函数void

stop_proce()。主要是在main()函数中用while循环和开关语句switch选择序号对其进行控制,可以先创建进程并观察然后在选择序号终止该进程。b.具体实现:首先我们必须知道函数CreateProce()的参数定义(类型和名称),共10个参数,其函数原型为

BOOL CreateProce

(LPCTSTR lpApplicationName,LPTSTR lpCommandLine,LPSECURITY_ATTRIBUTES lpProceAttributes。

LPSECURITY_ATTRIBUTES lpThreadAttributes,BOOL bInheritHandles,DWORD dwCreationFlags,LPVOID lpEnvironment,LPCTSTR lpCurrentDirectory,LPSTARTUPINFO lpStartupInfo,LPPROCESS_INFORMATION lpProceInformation);

其中第二个参数lpCommandLine参数允许调用者向新应用程序发送数据;STARTUPINFO所必需的,用于在必要时指明新应用程序的主窗口的外观.lpProceInformation用于调用的结果块和发送新应用程序的进程和主线程的句柄和ID号。其他参数可以按缺省值为空。

判断创建进程是否成功,若不成功,输出创建不成功并返回;若成功则显示程序并获得句柄,以方便终止句柄。在终止进程过程中,若句柄不为空,调用TerminateProce()进一步判断。

其函数原型

BOOLTerminateProce(HANDLEhProce,//handletotheproce

UINTuExitCode);

(3)程序结果:打印程序的输出结果(表明对应的数据)或主要界面图。

开始时的界面:(如图所示)

输入序号1后 产生的结果:

接着输入序号2后该进程被撤销后的结果:

输入序号3退出程序:

(4)调试与测试:

如果进入主界面时,直接执行序号2终止进程:

上述结果表明 由于事先没有创建进程,所以句柄为空,无法终止进程。

四.实验总结

首先查看“任务管理器”进程的动态,并新建和关闭进程观察。接着是要创建进程和撤销进程,首要工作是我们得弄清楚两个系统函数CreateProce()和

TerminateProce()入口参数的类型和函数,弄明白这些关键因素,然后就是如何将它们组织起来,我用的控制台下的switch语句来控制到底进行哪种操作。通过这次试验,我们加深了平时学习的理论知识和实践的联系,并加深了印象。不过,我觉得这次试验如果能够用MFC的消息触发更加直观,有些参数弄的还是不太明白,还需要多多努力。

五.附录源代码

#include

#include

using namespace std;

HANDLE m_hPro;

void startproce()//创建进程

{

STARTUPINFO si;//必备的参数设置

int n=1;

memset(&si,0,sizeof(STARTUPINFO));

si.cb=sizeof(STARTUPINFO);

si.dwFlags=STARTF_USESHOWWINDOW;

si.wShowWindow=SW_SHOW;

PROCESS_INFORMATION pi;

if(!CreateProce(NULL,“C://Program Files//Internet

Explorer//iexplore.exe”,NULL,NULL,false,0,NULL,NULL,&si,&pi))

{

cout

exit(1);

}

else

{

cout

m_hPro=pi.hProce;

}

}

void stop_proce()

{

if(m_hPro){if(!TerminateProce(m_hPro,0)){

}}} //终止出现错误,显示错误信息 LPVOID lpMsgBuf;FormatMeage(FORMAT_MESSAGE_ALLOCATE_BUFFER |FORMAT_MESSAGE_FROM_SYSTEM |FORMAT_MESSAGE_IGNORE_INSERTS, NULL, GetLastError(), MAKELANGID(LANG_NEUTRAL,(LPTSTR)&lpMsgBuf, 0, NULL);SUBLANG_DEFAULT),else {} m_hPro=NULL;cout

int main(){

while(1){ cout>i;{ case 1:startproce();break;switch(i)

}case 2:stop_proce();break;case 3:exit(1);} }return(0);

《进程的创建与销毁.docx》
将本文的Word文档下载,方便收藏和打印
推荐度:
进程的创建与销毁
点击下载文档
相关专题 创建和销毁进程实验 进程 创建和销毁进程实验 进程
[其他范文]相关推荐
    [其他范文]热门文章
      下载全文