资源描述:
《实验一-创建进程和撤销进程.doc》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库。
1、实验一进程创建与撤消一、实验目的1.通过创建进程、观察正在运行的进程和终止进程的程序设计和调试操作,进一步熟悉操作系统的进程概念,理解Windows2000进程生存过程.2.通过阅读和分析实验程序,学习创建进程、观察进程和终止进程的程序设计方法.二、背景知识1.创建进程:CreateProcess()调用的核心参数是可执行文件运行时的文件名及其命令行.下表详细地列出了每个参数的类型和名称.参数名称使用目的LPCTSTRlpApplivationName全部或部分地指明包括可执行代码的EXE文件的文件名LPCTSTRlpCommandLine向可执行文件发送的参数LPSECURIITY_ATT
2、RIBUTESlpProcessAttributes返回进程句柄的安全属性.主要指明这一句柄是否应该由其他子进程所继承LPSECURIITY_ATTRIBUTESlpThreadAttributes返回进程的主线程的句柄的安全属性BOOLbInheritHandle一种标志,告诉系统允许新进程继承创建者进程的句柄DWORDdwCreationFlage特殊的创建标志(如CREATE_SUSPENDED)的位标记LPVOIDlpEnvironment向新进程发送的一套环境变量;如为null值则发送调用者环境LPCTSTRlpCurrentDirectory新进程的启动目录STARTUPINFO
3、lpStartupInfoSTARTUPINFO结构,包括新进程的输入和输出配置的详情LPPROCESS_INFORMATIONlpProcessInformation调用的结果块;发送新应用程序的进程和主线程的句柄和ID2.终止进程:所有进程都是以调用ExitProcess()或者TerminateProcess()函数结束的.但最好使用前者而不要使用后者,因为进程是在完成了它的所有的关闭“职责”第5页共5页之后以正常的终止方式来调用前者的.而外部进程通常调用后者即突然终止进程的进行,由于关闭时的途径不太正常,有可能引起错误的行为.TerminateProcess()API函数只要打开带有
4、PROCESS_TERMINATE访问权的进程对象,就可以终止进程,并向系统返回指定的代码.这是一种“野蛮”的终止进程的方式,但是有时却是需要的.如果开发人员确实有机会来设计“谋杀”(终止别的进程的进程)和“受害”进程(被终止的进程)时,应该创建一个进程间通讯的内核对象——如一个互斥程序——这样一来,“受害”进程只在等待或周期性地测试它是否应该终止.三、实验内容1.主界面设计:2.创建进程的代码主要通过CreateProcess()函数调用的核心参数是可执行文件运行时的文件名及其命令行来实现的。voidCMy201200824403Dlg::OnCreateprocess(){//TODO:
5、AddyourcontrolnotificationhandlercodeherePROCESS_INFORMATIONpi;STARTUPINFOsi;memset(&si,0,sizeof(si));si.cb=sizeof(si);si.wShowWindow=SW_SHOW;si.dwFlags=STARTF_USESHOWWINDOW;第5页共5页//OPENNOTEBOOKOROTHERBOOLfRet=CreateProcess(NULL,"c:\windowsotepad.exec:\201200824403.txt",NULL,NULL,FALSE,NORMAL_
6、PRIORITY_CLASS
7、CREATE_NEW_CONSOLE,NULL,NULL,&si,&pi);if(!fRet){//ifcreatedfail,showmistakeinformationLPVOIDlpMsgBuf;FormatMessage(FORMAT_MESSAGE_ALLOCATE_BUFFER
8、FORMAT_MESSAGE_FROM_SYSTEM
9、FORMAT_MESSAGE_IGNORE_INSERTS,NULL,GetLastError(),MAKELANGID(LANG_NEUTRAL,SUBLANG_DEFAULT),(LPTSTR)&lpMsgBuf,0,
10、NULL);AfxMessageBox((LPCTSTR)lpMsgBuf);LocalFree(lpMsgBuf);}else{AfxMessageBox("CreateProcessSuccess");m_hPro=pi.hProcess;}}3.终止进程的代码是通过TerminateProcess()API函数只要打开带有PROCESS_TERMINATE访问权的进程对象,就可以终止进程,并向系统返回指