资源描述:
《编程中的进程管理》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库。
1、Windows系统编程实用教程授课教师:职务:第7章进程编程课程描述大多数应用程序都以进程的形式运行,有时还需要在应用程序里运行或结束其他进程。本章将介绍Windows进程编程的方法。本章知识点7.1进程编程基础7.2基本进程编程7.3进程间通信7.1进程编程基础7.1.1什么是进程7.1.2进程的状态7.1.1什么是进程进程是正在运行的程序的实例。每个运行的VisualC++项目都对应一个进程,每个进程至少包含一个线程,它从main()函数开始执行,直到执行return语句返回,主线程结束,该进程也被从内存中卸载。进程由如下几个部分组成。与程序相关联的可执行代码的映像;内存空间(
2、通常是虚拟内存中的一些区域),其中保存可执行代码、进程的特定数据、用于记录活动例程和其他事件的调用栈、用于保存实时产生的中间计算结果的堆(heap)。分配给进程的资源的操作系统描述符(比如文件句柄)以及其他数据资源。安全属性,比如进程的所有者和权限。处理器的状态,比如寄存器的内容、物理内存地址等。7.1.2进程的状态7.2基本进程编程7.2.1创建进程7.2.2枚举系统进程7.2.3终止进程7.2.1创建进程在应用程序中可以调用CreateProcess()函数创建一个新进程、运行其他程序,函数原型如下:BOOLWINAPICreateProcess(__inLPCTSTRlpAp
3、plicationName,__in_outLPTSTRlpCommandLine,__inLPSECURITY_ATTRIBUTESlpProcessAttributes,__inLPSECURITY_ATTRIBUTESlpThreadAttributes,__inBOOLbInheritHandles,__inDWORDdwCreationFlags,__inLPVOIDlpEnvironment,__inLPCTSTRlpCurrentDirectory,__inLPSTARTUPINFOlpStartupInfo,__outLPPROCESS_INFORMATIONlpP
4、rocessInformation);参数说明lpApplicationName,要执行的应用程序名,可以包括结对路径和文件名,通常可以为NULL。lpCommandLine,要执行的命令行。lpProcessAttributes,新进程的安全描述符。lpThreadAttributes,指定主线程的安全描述符。如果为NULL,则使用默认的安全描述符。bInheritHandles,指示新进程是否从调用进程处继承句柄。dwCreationFlags,指定附加的、用来控制优先类和进程创建的标志。lpEnvironment,指向新进程的环境块。如果为NULL,则使用调用CreatePr
5、ocess()函数的进程的环境。【例7.1】调用CreateProcess()函数运行Windows计算器程序,并显示新进程的ID号,及其主线程的Id号,代码如下:#include"stdafx.h"#includeint_tmain(intargc,_TCHAR*argv[]){charszCommandLine[]="calc.exe";STARTUPINFOsi={sizeof(si)};PROCESS_INFORMATIONpi;si.dwFlags=STARTF_USESHOWWINDOW;//指定wShowWindow成员有效si.wShowWin
6、dow=TRUE;//显示新建进程的主窗口接上BOOLbRet=CreateProcess(NULL,//不在此指定可执行文件的文件名szCommandLine,//命令行参数NULL,//默认进程安全性NULL,//默认进程安全性FALSE,//指定当前进程内句柄不可以被子进程继承CREATE_NEW_CONSOLE,//为新进程创建一个新的控制台窗口NULL,//使用本进程的环境变量NULL,//使用本进程的驱动器和目录&si,&pi);if(bRet){//关掉不使用的句柄CloseHandle(pi.hThread);CloseHandle(pi.hProcess);pri
7、ntf("新进程的ID号:%d",pi.dwProcessId);printf("新进程的主线程ID号:%d",pi.dwThreadId);}system("pause");return0;}【例7.1】的运行结果ShellExecute()函数HINSTANCE ShellExecute(HWND hwnd,//指定显示用户界面和错误信息的窗口句柄LPCTSTR lpOperation,//对指定文件要执行的操作LPCTSTR lpFile,//要执行操作