欢迎来到天天文库
浏览记录
ID:50121120
大小:282.50 KB
页数:12页
时间:2020-03-04
《在Windows下创建进程和线程的API.doc》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库。
1、.利用API在Windows下创建进程和线程前言: 谈到在Windows创建线程的例子,在网上的很多的参考都是基于MFC的。其实,就操作系统实验这个前提而言,大可不必去碰那个大型的MFC的框架。在Windows命令控制台下可创建进程及线程,做些简单的进程及线程的测试程序。1、实验准备: 要实验的Windows下的多线程实验,应做如下准备: a)在新建中选”Win32ConsoleApplication”的Anemptyproject b)选”工程”的”设置”选项,在”设置”中选择“C/C++”标签,在”ProjectOption”中,将”MLd”参数改成“MTd
2、”(如图1)。图1选项以上两步对实验成功至关重要,否则,即是代码无误,在连接时同样会出现问题。2、Windows下进程的创建: Windows的进程和线程模型被描述成”多进程,基于单进程的多线程”。 在创建一个线程时,Windows会做大量的工作---创建一个新的地址空间,为进程分配资源以及创建一个基线程。页脚. CreateProcess函数的原型如下:CreateProcess( LPCTSTRlpApplicationName, //pointertonameofexecutablemoudle LPTSTRcmdLine, //pointertocomma
3、ndlinestring LPSECURITY_ATTRIBUTESlpProcessAttributes, //pointertoprocesssecurityattributes LPSECURITY_ATTRIBUTESlpThreadAttributes, //pointertothereadsecurityattributes BOOLbInheritHandle, //handleinheritanceflag DWORDdwCreationFlag,//variouscreationflags LPVOIDlpEnviroment,//Enviroment
4、variable LPCTSTRlpCurrentDirectory,//Child'scurrentdirectory LPSTARTUPINFOlpStartupInfo,//pointertoStartupInfo LPPROCESS_INFORMATIONlpProcessInformation //pointertoPROCESS_INFORMATION) 虽然有很多参数,不过在现阶段的实验级别,大多数参数只要用默认值即可。下面要做的关于Windows使用进程的实验,在Linux系统下,可以使用类似: execve(char*cmdName,char*cm
5、dArgu)的语句从一个程序中去执行其它的程序。 而如果在Windows下,当使用CreateProcess去执行相应的功能时,只要去改变cmdLine中的内容即可,其它的参数使用默认值,具体见代码1: 代码1执行的功能是从命令行中启动这个名叫的launch的测试程序,在launch后面应加上保存有需要打开程序路径的文件名: 如在命令行中键入:>launchset.txt 而set.txt中的内容为:C:\WINDOWS\SYSTEM32\CALC.EXEC:\WINDOWS\SYSTEM32\NOTEPAD.EXENEW.TXTC:\WINDOW
6、S\SYSTEM32\CHARMAP.EXE 路径的前半部分为”C:\WINDOWS\”,这当然要视你的Windows系统的类型以及系统盘的存放位置而定。如果是NT或2000的机器,则应使用WINNT./*测试程序1: 示例如何使用进程的launch程序(启动程序),通过在命令行中加载相应的命令文件,去按照命令文件中指定的程序路径打开相应的程序去执行*/页脚.#include#include#include#defineMAX_LINE_LEN80intmain(intargc,char*argv[
7、]){//localvariablesFILE*fid;charcmdLine[MAX_LINE_LEN];//CreateProcessparametersLPSECURITY_ATTRIBUTESprocessA=NULL;//DefaultLPSECURITY_ATTRIBUTESthreadA=NULL;//DefaultBOOLshareRights=TRUE;//DefaultDWORDcreationMask=CREATE_NEW_CONSOLE;//Windowperprocess.LPVOIDenviroment=NUL
此文档下载收益归作者所有