进程的创建与撤销.docVIP

  • 15
  • 0
  • 约2.04千字
  • 约 5页
  • 2017-08-22 发布于湖北
  • 举报
进程的创建与撤销

实验一 进程创建与撤销 实验目的 通过创建进程,观察正在运行的进程和终止进程的程序设计与调试操作,进一步熟悉操作系统的进程概念,理解windows 2007进程生存过程. 通过阅读和分析实验程序,学习创建进程,观察进程和终止进程的程序设计方法。 背景知识 1.创建进程:CreateProcess()调用的核心参数是可执行文件运行时的文件名以及其命令行。其核心参数和名称和类型如下: lpApplicationName:指定要执行的模块,包括可执行代码的EXE文件的文件名。 lpCommandLine:指向一个以空结尾的串,该串定义了要执行。该命令行是可以在Windows提示符下执行的的命令行命令行。 lpProcessAttributes:指向一个SECURITY_ATTRIBUTES结构,该结构决定了返回的句柄是否可被子进程继承。 lpThreadAttributes:指向一个SECURITY_ATTRIBUTES结构,该结构决定了返回的句柄是否可被子进程继承。 bInheritHandles:表明新进程是否可继承创建者进程的句柄。 dwCreationFlags:定义控制优先类和进程创建的附加标志。 lpEnvironment:指向一个新进程的环境块。 lpCurrentDirectory:指向一个以空结尾的串,该串定义了子进程的当前驱动器和当前目录。 lpStartupInfo:指向一个STARTUPINFO结构,该结构定义了新进程的主窗口将如何显示。 lpProcessInformation:指向进程信息描述结构,该结构接受关于新进程的描述信息。 可执行文件运行时的文件名及其命令行,如 lpCommandLine=c:\\windows\\system32\\cmd.exe” 或lpApplicationName=“c:\windows\system32\cmd.exe” lpStartupInfor描述新进程的窗口显示情况。定义STARTUPINFO结构,并赋予初始值, 如:STARTUPINFO si; memset(si,0,sizeof(si)); si.cb=sizeof(si); lpProcessInformation指向进程信息描述结构,接受关于新进程的描述信息,如:PROCESS_INFORMATION pi 所有进程都是以调用ExitProcess() 或者TerminateProcess() 函数结束的。 TerminateProcess() API函数只要打开带有PROCESS_TERMINATE访问权的进程对象,就可以终止进程,并向系统返回指定的代码。 如果不知道所创建进程中所有线程的状态,最好使用TerminateProcess() 终止进程。 进程创建和撤销的代码 #includewindows.h #includecstdlib #includeiostream using namespace std; void main() { PROCESS_INFORMATION pi; STARTUPINFO si; //一数据结构,定义新进程的窗口如何显示 memset(si,0,sizeof(si)); //为该结构内存中数据初始化为0 si.cb=sizeof(si); si.wShowWindow=SW_SHOW; si.dwFlags=STARTF_USESHOWWINDOW; bool creat=CreateProcess(NULL, C:\\Users\\Stone\\Desktop\\示例代码\\line演示\\line\\x64\\Debug\\line.exe, NULL, NULL, FALSE, NORMAL_PRIORITY_CLASS|CREATE_NEW_CONSOLE, NULL, NULL, si, pi); if(!creat) { 进程创建成功!; } else cout进程创建成功!\n; if(!TerminateProcess(pi.hProcess,0)){ cout终止进程出错!; } else { cout终止进程成功!; } int n; cinn; } 当父进程执行时的运行结果如图: 控制面板上的信息提示为: 当销毁进程时: 执行结果为: 心得体会 通过本实验的操作,简单了解了CreateProcess()函数的参数类型,以及参数中涉及的一些数据结构,对于进程创建过程中遇到的bug,能结合各数据结构的参数类型进行转换,得以成功完成进程的创建和销毁

文档评论(0)

1亿VIP精品文档

相关文档